Frage

Ich arbeite an einem Scraping -Projekt, irgendwo in der Anwendung brauche ich diese Funktionalität

Führen Sie immer wieder ein Skript mit einer Pause von einigen Sekunden aus.

Ich habe versucht, PCNTL zu verwenden, um den Job zu erledigen. Also schrieb dieses Skript

/************************/
$intra_sleep=10; // we're going to set the intra process launch sleep at 10 seconds
$task_process=null; // by default this is set to null -- do nothing
$loop_limit=0; // this is the number of times the loop shoul run -- if set to -1 look infinite number of times

if (isset($argv[1])) $task_process=$argv[1];
if (isset($argv[2])) $intra_sleep=$argv[2];
if (isset($argv[3])) $loop_limit=$argv[3];


for ($loop_count=0; $loop_limit==-1 ? true : $loop_count< $loop_limit; $loop_count++) 
{
  $pid= pcntl_fork();

   if ($pid == -1) 
   {
    die('MASTER: could not fork');
   } 
   else if ($pid==0) 
   {
     if ($task_process) 
     { 
       echo "Sleeping for  $intra_sleep Seconds\n"; 
       sleep($intra_sleep);
       echo "Launching Child \n\n"; 
       exec($task_process); // from here process script is being launched
     } 
     else 
     {
    echo "  CLONE: no task process defined -- doing nothing " . PHP_EOL;
     }
  } 
  else 
  {
     pcntl_waitpid($pid,$status);  
  } 


}

/*********************/

Ich nenne dieses Skript von CLI wie auf diese Weise

nohup php /this/script.php "php /path/to/process.php" 10 -1

Ich gehe davon aus, dass der Prozess.Php mit 10 Sekunden Intervallen immer wieder eingeführt wird. Es leistete die Arbeit, was ich erwartet hatte, aber wenn ich Runing -Prozesse überprüfe, wurden Tausende ausgeführt, die von diesem Skript gestartet wurden.

Meine Anforderung ist sehr einfach: Ein Skript sollte immer wieder mit 10 Sekunden Pause gestartet werden.

War es hilfreich?

Lösung

Wenn Sie nur alle x Sekunden ein PHP -Skript wiederholen möchten, können Sie den Fat Controller verwenden, um das gesamte Dämonising und Ausführen von Skripten für Sie zu verarbeiten, damit Sie sich auf das Geschäftslogikin Ihres PHP -Skripts konzentrieren können. Es ist in C geschrieben, also ist es sehr stabil, egal was Sie in Ihren PHP -Skripten tun.

Es liefert im Grunde die folgende Funktionalität:

  • Daemonising, also musst du dich nicht mit Nohup anlegen)
  • Multitasking, in Ihrem Fall nicht relevant, sodass Sie gerade gleichzeitige Prozesse auf 1 festlegen
  • Wiederholtes Laufen, also müssen Sie sich nicht mit Gabeln anlegen.

Es gibt viele Funktionen, um Fehler in PHP -Skripten und fehlerhaften langlebigen Skripten zu behandeln.

Es ist ziemlich einfach zu installieren und eingerichtet zu werden, und es gibt viele Dokumentationen auf der Website, um Ihnen den Einstieg zu erleichtern. Zumindest ist es einen kurzen Blick wert, um zu sehen, ob es Ihnen hilft.

http://fat-controller.sourceforge.net/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top