Verbessert: Langdauerenden Job unter Linux aus PHP heraus batchen (auslagern)
bearbeitet von Indianerversteher~~~ PHP
<?php
$tmpfile = trim(`mktemp`);
$errFile = $tmpfile . '.err';
$postFile = $tmpfile . '.post';
file_put_contents( $postFile, serialize( $_POST )
session_start();
$sessFile = $tmpfile . '.sess';
file_put_contents( $sessFile, serialize( $_SESSION );
$jobString = 'script.sh'. ' ' . $tmpfile;
$jobNumber = intval(`echo "'$jobString > $tmpfile 2> $errFile'" | batch 2>&1 | tail -n1 | cut -d ' ' -f2`);
echo "Job-Nummer: " . $jobNumber . "\n";
?>
~~~
Das ist immer noch ein Beispiel. script.sh bekommt den Name und kann damit auch die Daten, z.B. $_POST, $_SESSION aus den temporären Dateien lesen. Das Skript hat dann den Job zu erledigen, den Müll wegzuräumen und dem Benutzer einen individuellen Link zu einer Ressource mit den Ergebnissen (die stehen dann hoffentlich in $tmpfile und können hoffentlich ausgewertet werden) zu senden.
Wer Angaben machen will wie viele Jobs noch offen sind: Der Linux-Befehl `atq` liefert eine nette Liste...