Я хочу, чтобы демона php спала (с System_Daemon :: iterate ()), поэтому он запускает максимум 20 раз случайным образом в течение часа. возможно, минимальное расстояние было бы умным, так что он не будет работать 20 раз в первые полчаса и 0 раз во второй половине.
я вроде бы застрял здесь и не знаю, как начать с этого, любая помощь очень высоко ценится!
Вы можете использовать задания cron, чтобы сценарий запускался так часто.
http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/
… Кронтаб:
0 9 * * * /path/to/bashscript
и в / path / to / bashscript:
#!/bin/bash maxdelay=$((1*60)) # every hour, converted to minutes for ((i=1; i<=20; i++)); do delay=$(($RANDOM%maxdelay)) # pick an independent random delay, 20 times (sleep $((delay*60)); /path/to/phpscript.php) & # background a subshell, then run the php script done
Я придумал одно возможное решение, я еще не пробовал его, поэтому он содержит синтаксические или логические ошибки. потому что он работает как демон, вокруг него бесконечный цикл.
// 3600 seconds or one hour $timeframe=3600; // run max 20 times in $timeframe $runtimes=20; // minimum delay between two executions $mindelay=60; // maxium delay between two executions $maxdelay=240; if ($cnt % $runtimes != 0) { $delay = rand($mindelay,$maxdelay); System_Daemon::iterate($delay); $sum += $delay; $cnt++; } else { //final delay till the $timeframe if ($sum < $timeframe) { System_Daemon::iterate($timeframe - $sum); } $sum=0; }
его не идеально, и у меня есть время, но я думаю, что он собирается полностью выполнить эту работу. любые комментарии?