2012-01-13 9 views
0

現在オンラインゲームを執筆中です。今度は、イベントが発生するかどうか(データベースのタイムスタンプをチェックする)、それに応じていくつかのアクションを実行する必要があります。私は1秒ごとにイベントをチェックする必要があります。私は毎秒PHPスクリプトを実行しますか?

私はcronジョブを使いたいと思っていましたが、cronを使って毎分だけスクリプトを実行できます。

私の考えは、私のPHPスクリプトでcronとloopを60回使用することでした。しかし、私はこれが最善の解決策ではないと思います。

毎秒スクリプトを実行するにはどうすればよいでしょうか?

+1

http://superuser.com/questions/342830/cron-alternative-with-timeouts-and-second-resolutionをご覧ください。 –

+3

可能な複製:http://stackoverflow.com/questions/1726116/run-a-php-script-every-second-using-cli –

+0

私はあなたの問題に対する間違った解決策を探していると思います。あなたが慣れていたものとは根本的に異なるアーキテクチャを求めてください。あなたは何を達成しようとしていますか? – deceze

答えて

0

私はより良い解決法を探しましたが、私の最初のアイデアは、きれいなコードで、最良の解決策であるようです。

<?php 
set_time_limit(60); 
$start = time(); 

for ($i = 0; $i < 59; ++$i) { 
    // Do whatever you want here 
    time_sleep_until($start + $i + 1); 
} 
?> 
0

毎秒コードを繰り返すようにスクリプトを変更しないでください。これにより、解析のオーバーヘッドが削減され、複雑さが軽減されます。

0

スクリプトを一度実行し、遅延を伴うループを使用して目的のタイミングを達成してください。 副次的な利点は、これがより効率的であり、リソース(つまり、データベース)を一度開くだけでよいということです。

0

あなたはこれをしてはいけません。ホストはあなたのcronjobが1分おきに毎秒走っているのを受け入れませんか? データベースで実行された時間を保存することができます。次に実行すると、両方の実行の間の時間を計算し、必要な計算を行います。毎秒は非常に悪い考えです。

0
$total_time = 0; 
$start_time = microtime(true); 
while($total_time < 60) 
    { 
     //DoSomethingHere; 
    echo $total_time."\n"; 
    //sleep(5); 
    $total_time = microtime(true) - $start_time ; 
    } 

分ごとに実行するのcrontabに以下を追加:

これは私の現在のコードです。

関連する問題