Цикличное выполнение сценарий PHP

ThrowIfArgumentIsNull является хорошим способом сделать ту пустую проверку, которую все мы должны сделать.

public static class Extensions
{
    public static void ThrowIfArgumentIsNull(this T obj, string parameterName) where T : class
    {
        if (obj == null) throw new ArgumentNullException(parameterName + " not allowed to be null");
    }
}

Ниже способ использовать его, и это работает над всеми классами в Вашем пространстве имен или везде, где Вы используете пространство имен в.

internal class Test
{
    public Test(string input1)
    {
        input1.ThrowIfArgumentIsNull("input1");
    }
}

нормально использовать этот код проект CodePlex.

8
задан William W 13 July 2009 в 20:44
поделиться

6 ответов

Вы можете запустить родительский php-процесс, который разветвляет клиента с определенным интервалом. Если вам интересно изучить это как вариант, вот хорошая отправная точка: http://ca2.php.net/pcntl Хорошая вещь в том, чтобы сделать это таким образом, заключается в том, что родительский процесс может убить клиента pid, которые не заканчиваются в течение разумного промежутка времени.

Если вы ищете что-то быстрое и грязное, вы можете написать сценарий bash, чтобы довольно легко вызывать php (если вы используете Linux):

#!/bin/bash
while [ "true" ]; do
        /path/to/script.php
        sleep 15
done

EDIT На самом деле вам даже не нужен скрипт, bash сделает все в одной строке:

while [ "true" ]; do /path/to/script.php; sleep 15; done
4
ответ дан 5 December 2019 в 19:02
поделиться

PHP как язык не очень хорошо работает бесконечно. Поскольку у вас есть cron-job каждые десять минут, почему бы не выполнить задачу 60 раз, а затем выйти?

Кроме того, PHP имеет разные файлы конфигурации для CLI и для режимов apache на большинстве серверов Linux. Поэтому было бы разумно проверить файл etc / php / cli / php.ini и проверить максимальное время выполнения и ограничения памяти.

1
ответ дан 5 December 2019 в 19:02
поделиться

Убедитесь, что ваш исполняемый файл PHP скомпилирован для использования в качестве интерпретатора командной строки, а не исполняемого файла CGI. PHP обычно убивает скрипты, которые выполняются дольше max_execution_time (по умолчанию 30 секунд). Исполняемые файлы CLI, однако, не налагают этого ограничения.

Дополнительная информация о CLI и CGI SAPI.

Вы можете проверить SAPI своего исполняемого файла, используя аргумент - версия :

$ php --version
PHP 4.3.0 (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies
2
ответ дан 5 December 2019 в 19:02
поделиться

Вы можете проверить свой параметр max_execution_time в файле php.ini. Я считаю, что по умолчанию 30 секунд. Как вы настроили с помощью cron, у вас, вероятно, будет несколько экземпляров скрипта, запущенного через 10 минут, если вы не добавите в скрипт некоторую логику, чтобы проверить, что сам экземпляр еще не запущен

2
ответ дан 5 December 2019 в 19:02
поделиться

время от времени (до того, как у вас закончится память) выходят из цикла и повторно запускаются exec ("/ usr / bin / php". ФАЙЛ );

0
ответ дан 5 December 2019 в 19:02
поделиться

Существует модуль PEAR для написания долго выполняющихся сценариев PHP. Но сам я им не пользовался.

0
ответ дан 5 December 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: