Indianerversteher: Verbessert: Langdauerenden Job unter Linux aus PHP heraus batchen (auslagern)

Beitrag lesen

<?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 der temporären Datei und kann damit auch die Daten, z.B. $_POST, $_SESSION aus den weiteren temporären Dateien lesen. Das Skript hat dann den Job zu erledigen, den Müll wegzuräumen und dem Benutzer per Mail einen individuellen Link zu einer Ressource mit den Ergebnissen (die stehen dann hoffentlich in $tmpfile und können hoffentlich ausgewertet werden) zu senden.

Wer die Angabe machen will wie viele Jobs noch offen sind: Der Linux-Befehl atq liefert eine nette Liste...