2014-10-13 3 views
1

Итак, я работаю над веб-сайтом, основанным на времени, в PHP на моем сервере CentOS. У меня есть случайное время, выбранное в будущем, в течение 24 часов с момента настоящего. В этот момент мне нужен файл PHP для выполнения, а также новая дата для выбора и тот же файл, который нужно открыть. Как это можно сделать? Я коротко взглянул на cronjobs, но не смог найти способ открыть их в определенное, случайное время.Как запустить php-файл в определенное время?

+0

Что вы подразумеваете под «конкретным случайным временем»? Конечно, это либо конкретное, либо случайное; не оба. –

+0

@Mike W Используя php time(), у меня есть секунда в течение 24 часов. Я бы хотел, чтобы сценарий был выполнен в эту секунду. – JavaProphet

ответ

0

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

$time_to_run = intval(file_get_contents('my.timestamp')); 
if(time() >= $time_to_run) { 
    do stuff 
    file_put_contents(time() + random value, 'my.timestamp'); 
} 

Если вам нужно больше зернистости, лучший вариант был бы, чтобы запустить его в качестве демона (см советов here) и просто цикл навсегда (возможно, с некоторыми sleep() внутри) до тех пор, пока придет время.

+0

Вещь в том, что это связано с денежными переводами в БТД. Сайт, который я делаю, включает передачу в очень конкретное время. Могу ли я сделать cronjob, который запускается каждую секунду? Скрипт должен запускать запрос БД и выполнять некоторые незначительные математические уравнения и только при необходимости выполнять еще несколько запросов БД. – JavaProphet

+0

@ user3618509: обновлено – georg

0

Вы можете использовать команду at, запустите свой PHP-файл и в конце зарегистрируйте другой звонок по адресу в следующий раз. Что-то вроде этого

<?php 
// your PHP code in here, and then find out when is the next call time 
$time = date('H:i', intval($time)); // or another good way to make sure time value is safe to use as a shell argument, like using escapeshellarg() 
$run_me = "/usr/bin/env php " . __FILE__; 
exec("echo '$run_me' | at '$time'"); 
Смежные вопросы