In een php script (r_norm.php) start ik een batch shellscript in de achtergrond met de volgende code
code:
Het shell script start een aantal berekeningen in perl die enige minuten duren.
Aan het eind schrijft het perl script de resultaten naar een MySQL database die gereviewed kunnen worden in (uploads.php). So far so good, na het shell_exec command verschijnt de link naar de overview pagina en zie ik de batchjob lopen op de server.
Nu komt het probleem. Als ik de overview pagina (uploads.php) wil bekijken, dan wacht de server totdat de batchjob is afgelopen. Als ik een willekeurige andere (php) pagina wil bekijken dan wordt die pagina wel door de server geleverd. Ik heb geen idee waarom die éne php pagina (uploads.php) wacht op een batchjob dat in de achtergrond loopt en alle andere pagina's niet.
als ik naar de lopende processen kijk dan zie ik de batchjob starten op 1 processor. De tabel in Mysql is niet gelocked tijdens de berekening.
server: dual xeon/Apache 1.3.28/php 4.1.2/MySQL 4.x
netwerk: 100 Mbit
code:
code:
1
2
3
4
5
6
7
8
9
| run = ("/home/test/www/cgi-bin/R/runnorm.sh $session_follow '$barcode' $normtype $species '$profile' '$username'"); shell_exec ("nohup $run > /dev/null &"); flush(); echo "<p><a href=\"/test/uploads.php\"><b>Click here to view your uploads and data sets.</a></b><br>"; echo "<p><a href=\"/test/r_norm.php\"><b>Click here to upload another dataset.</a></b></p>"; flush(); exit(); |
Het shell script start een aantal berekeningen in perl die enige minuten duren.
Aan het eind schrijft het perl script de resultaten naar een MySQL database die gereviewed kunnen worden in (uploads.php). So far so good, na het shell_exec command verschijnt de link naar de overview pagina en zie ik de batchjob lopen op de server.
Nu komt het probleem. Als ik de overview pagina (uploads.php) wil bekijken, dan wacht de server totdat de batchjob is afgelopen. Als ik een willekeurige andere (php) pagina wil bekijken dan wordt die pagina wel door de server geleverd. Ik heb geen idee waarom die éne php pagina (uploads.php) wacht op een batchjob dat in de achtergrond loopt en alle andere pagina's niet.
als ik naar de lopende processen kijk dan zie ik de batchjob starten op 1 processor. De tabel in Mysql is niet gelocked tijdens de berekening.
server: dual xeon/Apache 1.3.28/php 4.1.2/MySQL 4.x
netwerk: 100 Mbit