2016-10-26 2 views
-1

У меня есть веб-сервер, работающий на мобильном устройстве, которое отправляет смс с использованием API, размещенного на том же мобильном устройстве. Я хочу запускать функцию PHP каждые 30 минут с 9 утра до 7 вечера каждый день без использования cron или любого другого размещенного сервиса.Запуск функции PHP каждые 30 минут с 9 утра до 7 вечера без использования cron

В настоящее время я следующий код

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 

} 

Как я могу запустить мое время цикл каждый день с 9 утра до 7 вечера?

Примечание. Поскольку я упоминал, что веб-сервер работает на мобильном устройстве, подключение к Интернету отсутствует, и там нет crontab.

+0

Это не поможет вам с вашей проблемой, но это называется «CRON», а не «кукуруза» ^^ – AntoineB

+0

a) она называется cron, а не кукурузой. b) * почему * вы не хотите его использовать? * это * именно то, что было сделано для cron. –

+0

жаль, что это была опечатка – Syed

ответ

0

В этом случае я хотел бы в первую очередь искать замену третьей стороны для cron, которую вы могли установить на этом устройстве. Это сэкономит вам много головных болей, так как имитация этого с помощью скриптов может быть затруднительным.

В противном случае вам потребуется написать скрипт-контроллер, который вызывает соответствующий скрипт. Этот сценарий контроллера должен иметь значение max_execution_time, равное 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); 
} 

Обратите внимание, что это не проверялось, но должно дать вам основу, чтобы начать с.

Смежные вопросы