2016-10-26 12 views
-1

同じモバイルデバイス上でAPIを使用してSMSを送信するモバイルデバイス上でWebサーバーを実行しています。 cronや他のホストされたサービスを使わずに毎日午前9時から午後7時まで30分ごとにPHP関数を実行したい。cronを使用しないで、午前9時から午後7時までPHP関数を30分おきに実行する

現在、私はどのように私は午前9時から午後7時まで、毎日私のwhileループを実行できますか?コード

function sleep_until($target_time, $min_sleep = 0) { 
    $time_now = time(); 

    $time_to_target = $target_time - $time_now; 

    // If we've already reached the target time, that's fine 
    if ($time_to_target <= $min_sleep) 
    { 
     // If required, sleep for a bit anyway 
     sleep($min_sleep); 
    } 
    else 
    { 
     // Sleep for the number of seconds until the target time 
     sleep($time_to_target); 
    } 
} 

$finished = FALSE; 
while (! $finished) { 
    $min_secs_per_loop = 1800; 
    $min_pause_between_loops = 1200; 

    $minimum_start_of_next_loop = time() + $min_secs_per_loop; 

    # DO STUFF THAT MAY OR MAY NOT TAKE VERY LONG 

    sleep_until($minimum_start_of_next_loop, $min_pause_between_loops); 

    # update $finished when required 

} 

を以下していますか

注:Webサーバーがモバイルデバイス上で実行されていると述べたので、インターネットに接続できず、そこでcrontabも利用できません。

+0

これはあなたの問題を助けませんが、「コーン」ではなく「CRON」と呼ばれています。^^ – AntoineB

+0

a)トウモロコシではなくcronと呼ばれています。 b)*なぜ*あなたはそれを使いたくないのですか? *それはまさにcronが作られたものです。 –

+0

申し訳ありませんでしたがまだ – Syed

答えて

0

この場合、私はこのデバイスにインストールできるcronのサードパーティの交換品を主に探していました。スクリプトを使ってこれをシミュレートするのは面倒なことがあるので、多くの頭痛を軽減します。

これができない場合は、問題のスクリプトを呼び出すコントローラスクリプトを作成する必要があります。このコントローラースクリプトは、を0に設定し、無限のメインループを実行し、1時間スリープし、パラメーターがパラメーター内にあるかどうかを確認する必要があります。基本的に
このような何か:これはテストされていないですが、あなたからスタートする基礎を与える必要があることを

set_time_limit (0); 

while (true) { 
    $hour = date ('H'); 

    if ($hour >= 19 && $hour < 9) { 
     // Calculate the difference between now and next time to run. 
     $diff = time_in_seconds(); 
     sleep ($diff); 
    } 

    exec ($command); 

    // Find the number of seconds until the next whole hour. 
    $sleep = next_hour(); 
    sleep ($sleep); 
} 

注意。

関連する問題