Выполнение одного и того же сценария PHP последовательно - PullRequest
0 голосов
/ 28 февраля 2011

Я пытаюсь выполнить скрипт с именем csearch.php пять раз с интервалом 60 секунд.Я пробовал shell_exec и exec, но там написано, что он не может быть разветвлен и т. Д. Я думаю, что лучший способ (поскольку это общий хост) - использовать include().

include('csearch.php');
sleep(60);
include('csearch.php');
sleep(60);
include('csearch.php');
sleep(60);
include('csearch.php');
sleep(60);
include('csearch.php');

csearch.php содержит функции и т. Д. Мне интересно, возможно ли это (код выше).Если нет, то какой лучший способ вы можете порекомендовать?Спасибо.

Редактировать, вот как я делаю это с exec и терпит неудачу:

exec('/path/to/php /path/to/csearch.php');

Ответы [ 3 ]

1 голос
/ 28 февраля 2011

Почему вы хотите это сделать? Мне кажется, что у вас может быть потребность в cronjob или иным образом допущена ошибка в вашем сценарии. В любом случае, если сценарий доступен извне (например, исполняемый по HTTP), вы можете использовать cURL, поскольку это может сделать то, что вы запрашиваете.

include('csearch.php');

$res = curl_init( 'http://site.com/csearch.php' );

while( $i < 5 ) {
   curl_exec( $res );
   sleep( 60 );
   $i ++;
}

А если серьезно, то, что вам действительно нужно это сделать, это очень тонкий.

0 голосов
/ 28 февраля 2011

Я бы выбрал подход, аналогичный предложению Берри, но без использования curl.

Оберните код в csearch.php в функцию (например, execute_action).

require_once('csearch.php');

for ($i = 0, $n = 5; $i < $n; $i++) {
    perform_action();

    if ($i < $n - 1) {
        // Only sleep if you need to
        sleep(60);
    }
}
0 голосов
/ 28 февраля 2011

Вы можете использовать:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...