実行に使用するスクリプトがあるwhile(true)
ため、死ぬまで永遠に実行されます。4分に1回何かをエコーできるようにしたいのですが、どうすればできますか? スクリプトはコマンドプロンプトで実行され、それを使用するwhile(true)
ため、混乱を招くだけでなく、4分ごとに実行する方法がわかりません. にいる間、4分ごとに何かをエコーさせるにはどうすればよいwhile(true)
ですか?
24757 次
3 に答える
7
あなたが試すことができます
while(true)
{
sleep(240); // sleep for 240 sec
echo " Hello World" ;
}
または
$time = time();
while ( true ) {
/*
* Play Some Ball
*/
if ((time() - $time) >= 240) {
echo date("Y:m:d g:i:s"), PHP_EOL;
$time = time();
}
sleep(2);
}
での出力テストTime = 2 sec, Sleep = 1 sec
2012:10:14 12:50:56
2012:10:14 12:50:58
2012:10:14 12:51:00
2012:10:14 12:51:02
2012:10:14 12:51:04
2012:10:14 12:51:06
2012:10:14 12:51:08
2012:10:14 12:51:10
2012:10:14 12:51:12
2012:10:14 12:51:14
于 2012-10-13T22:45:40.530 に答える
3
sleepメソッドを使用すると、実際にはスクリプトの実行が停止します。これがあなたが望むことなら、私は100%ではありません。
この問題に対処する別の方法は、反復ごとに最後の「echo」コマンドのタイムスタンプを比較することです。
$echo_time = time();
$interval = 4*60;
while(true){
if ($echo_time + $interval >= time()){
echo "$interval seconds have passed...";
$echo_time = time(); // set up timestamp for next interval
}
// other uninterrupted code goes here.
}
これにより、ループ内のコードを実行し続けることができ、各反復の開始時にのみ時間をチェックできます。
于 2012-10-13T22:48:12.003 に答える
1
while(true) { ... }
sleep() パラメータ関数のループに追加してみてください。
$sleep = 4*60;
while(true)
{
# waiting...
sleep($sleep);
# work after 240 mins
}
于 2012-10-13T22:47:02.223 に答える