Comment Construire un PHP Système de File d'attente
J'ai dû construire un PHP Système de File d'attente, et trouvé que c' brillant article
et je l'ai utilisé pour créer un PHP système de file d'attente, il est très facile à configurer et à utiliser.http://squirrelshaterobots.com/programming/php/building-a-queue-server-in-php-part-1-understanding-the-project
Ci-dessous est le code de la queue.php, exécuter à partir du shell (mastic ou somesuch).
<?PHP
//. set this constant to false if we ever need to debug
//. the application in a terminal.
define('QUEUESERVER_FORK', true);
////////fork into a background process ////////
if(QUEUESERVER_FORK){
$pid = pcntl_fork();
if($pid === -1) die('error: unable to fork.');
else if($pid) exit(0);
posix_setsid();
sleep(1);
ob_start();
}
$queue = array();
////////setup our named pipe ////////
$pipefile = '/tmp/queueserver-input';
if(file_exists($pipefile))
if(!unlink($pipefile))
die('unable to remove stale file');
umask(0);
if(!posix_mkfifo($pipefile, 0666))
die('unable to create named pipe');
$pipe = fopen($pipefile,'r+');
if(!$pipe) die('unable to open the named pipe');
stream_set_blocking($pipe, false);
////////process the queue ////////
while(1){
while($input = trim(fgets($pipe))){
stream_set_blocking($pipe, false);
$queue[] = $input;
}
$job = current($queue);
$jobkey = key($queue);
if($job){
echo 'processing job ', $job, PHP_EOL;
process($job);
next($queue);
unset($job, $queue[$jobkey]);
}else{
echo 'no jobs to do - waiting...', PHP_EOL;
stream_set_blocking($pipe, true);
}
if(QUEUESERVER_FORK) ob_clean();
}
?>
La partie la plus difficile a été d'obtenir les pcntl fonctions pour travailler sur mon serveur.
Ma question est "Comment puis-je obtenir le travail pour démarrer automatiquement lorsque/si le serveur a redémarrer?"
Comme indiqué dans les commentaires, édité lien brisé et a souligné l'excellente web archive pour la postérité.
Comment puis-je obtenir le travail pour démarrer automatiquement lorsque/si le serveur a pour redémarrer?
vous pouvez modifier le serveur de script de démarrage pour ce faire, ou vous pouvez ajouter un script qui rendra compte de l'état de script/server et le deuxième script pour redémarrer une tâche, puis de les utiliser à partir d'hôte local ou distant au serveur de moniteur/redémarrer le travail (avec une tâche cron)
Ne vous arrive d'avoir le brillant article de la page sauvé? Le site semble être en panne et c'était exactement ce que j'ai personnellement besoin 🙂
Il a ÉTÉ un brillant article - j'ai un signet pour une bonne raison. Je pense que ceci c'est notre meilleure option maintenant janvier 2016 œuvres.
OriginalL'auteur Folding Circles | 2013-01-04
Vous devez vous connecter pour publier un commentaire.
En l'ajoutant à la liste des choses a commencé lorsque le serveur démarre. Malheureusement, les instructions pour le faire varier énormément selon le système d'exploitation et la version de l'OS. Vous voudrez probablement utiliser quelque chose d'un peu plus de la croix-plate-forme. J'ai eu beaucoup de chance avec superviseur, que vous pouvez probablement trouver dans le package de repos à votre système d'exploitation de choix.
Cela dit, vous allez en bas de la route de folie. La chose que vous êtes en train de faire a été fait avant, en mieux, par des gens formidables. Découvrez la Gearman de travail système de file d'attente et le accompnaying Extension PECL. Il arrive que le superviseur est assez pratique pour maintenir votre Gearman travailleurs vivant aussi bien.
OriginalL'auteur Charles