2017-09-24 14 views
1

N曜日または時間の後に関数を呼び出して実行したい場合、今回は変更可能で、CRONジョブを設定することはできません。例えばN日後/ 1時間後に関数を呼び出す方法

one(1) 
one(2) 
one(24) 

function one($hour) 
{ 

    call two(); function after $hour 

} 


function two() 
{ 

    //do something 

} 

これを行うには、任意のライブラリはありますか?

+0

あなたは、これが実行されますサーバーへのsshアクセスを持っていますか? – mega6382

+0

これはどのようにタイムクリティカルなのでしょうか?もしそれが数分で終わってしまったら大丈夫ですか?それはウェブサイト用ですか?そのウェブサイトはどのくらい忙しいですか?あなたはデータベースストレージを持っていますか? –

+0

- 数分後に問題がありますか? はい、正確な時刻が重要です。 - ウェブサイト用ですか? はい。 - そのウェブサイトはどのくらい忙しいですか? 問題ありません。私たちは強いサーバーを持っているからです。 - データベースストレージはありますか? はい。 mysql。 –

答えて

0

PHPスクリプトの最上位にset_time_limit(0)を追加して、php.iniの最大実行時間制限を上書きします。

<?php 
set_time_limit(0); 

# Define your frequency 
$days = 1; 
$hours = 1; 
$minutes = 1; 
$seconds = 1; 

# Convert inputs into seconds 
$frequencySeconds = (
    ($days * 24 * 60 * 60) + 
    ($hours * 60 * 60)  + 
    ($minutes * 60)   + 
    ($seconds) 
); 


$startTime = microtime(1); 

while(1) { 

    # Get current timestamp 
    $timeNow = microtime(1); 

    # Find out how much time elapsed 
    $elapsedTime = $timeNow-$startTime; 

    # Check that time has surpassed frequency 
    if($elapsedTime >= $frequencySeconds) { 

     /* 
      insert your main code here 
     */ 

     # Update new start time 
     $startTime += $frequencySeconds; 

    } 
} 
?> 

しかし、心に留めて、スクリプトが原因ブラウザのHTTPタイムアウトおよび/またはhttpd.confファイルで定義されているApacheサーバの最大実行時間に終わるかもしれません。

関連する問題