Intereting Posts
Хорошо ли использовать filter_var с htmlentities в PHP? Скрытие заголовка PHP X-Powered-By Сопоставьте строку или подстроку с заданным словом, используя regex php Codeigniter Download Helper повреждает .7z и .rar файлы помощи или альтернативных решений? Заполнение флажков в форме редактирования Прочитайте параметры запроса POST правильно в PHP для запроса более 1450 B? Лучший способ хранения & (Амперсанд) в базе данных MySQL PHPExcel отправляет файл по электронной почте Вставить модель Backbone.js в базу данных MySQL Как использовать интерактивную оболочку PHP Получение кодировки = «UTF-8» standalone = «да» с использованием PHP asXML и SimpleXMLElement Получение солнечных данных из широты и долготы в php как выполнить программу .exe с помощью php-скрипта комбинации: избегать множественных вложенных foreach PHP: Я смешиваю программирование, управляемое событиями, с сигнальными интерфейсами (сигналом и слотом / шаблоном наблюдателя)?

Избегайте ограничения времени выполнения PHP

Мне нужно создать скрипт на языке PHP, который выполняет перестановку чисел. Но PHP имеет ограничение времени выполнения, установленное на 60 секунд. Как запустить сценарий, чтобы, если вам нужно запустить более 60 сеансов, не прерывается сервером. Я знаю, что могу изменить максимальное время выполнения в php, но я хочу услышать другую версию, которая не требует заранее знать время выполнения скрипта.

Друг предложил мне войти и выйти из системы часто с сервера, но я понятия не имею, как это сделать.

Любые советы приветствуются. Примерный код был бы полезен.

Благодарю.

Сначала мне нужно ввести число, скажем 25. После этого сценарий запускается и ему нужно сделать следующее: для каждого числа <= 25 оно создаст файл с номерами, сгенерированными на текущем этапе; для следующего номера он откроет созданный файл previuos и создаст другую файловую базу в строках открытого файла и так далее. Поскольку это занимает много времени, мне нужно избежать того, чтобы сценарий был запущен сервером.

    @emanuel:

    Я думаю, когда ваш друг сказал вам: «Друг предложил мне войти и выйти из системы часто с сервера, но я понятия не имею, как это сделать». Он / она, должно быть, имел в виду «Разделить вычисление скрипта на x частей работать и запускать его отдельно "

    Например, с помощью этого скрипта вы можете выполнить его 150 раз, чтобы достичь 150! (факторинг) и показать результат:

    // имя скрипта: calc.php

    <?php session_start(); if(!isset($_SESSION['times'])){ $_SESSION['times'] = 1; $_SESSION['result'] = 0; }elseif($_SESSION['times'] < 150){ $_SESSION['times']++; $_SESSION['result'] = $_SESSION['result'] * $_SESSION['times']; header('Location: calc.php'); }elseif($_SESSION['times'] == 150){ echo "The Result is: " . $_SESSION['result']; die(); } ?> 

    BTW (@Davmuz), вы можете использовать функцию set_time_limit () на серверах Apache, это недействительная функция на серверах Microsoft IIS.

     set_time_limit(0) 

    Вы можете попытаться поместить вызовы, которые хотите сделать в очереди, которые вы выполняете сериализуете в файл (или кеш памяти?) При выполнении операции. Затем вы можете использовать CRON-демон для выполнения этой очереди каждые шестьдесят секунд, поэтому он продолжает выполнять работу и завершает задачу.

    Недостатками такого подхода являются проблемы с добавлением в очередь, с блокировкой файлов и т. Д., И если вам нужны результаты немедленно, это может оказаться неприятным. Если вы добавляете материал в Db, это может сработать. Кроме того, он не очень эффективен.

    Используйте set_time_limit (0), но вы должны отключить safe_mode: http://php.net/manual/en/function.set-time-limit.php Я предлагаю использовать фиксированное время (set_time_limit (300)), потому что если является проблемой в сценарии (бесконечные петли или утечки памяти), это не может быть источником проблем.

    Веб-сервер, такой как Apache, также имеет максимальный временной интервал в 300 секунд, поэтому вам нужно его изменить. Если вы хотите сделать приложение Comet, может быть лучше выбрать другой веб-сервер, чем Apache, который может иметь длительные запросы.

    Если вам требуется длительное время выполнения для сложного алгоритма, вы также можете реализовать параллельную обработку: http://www.google.com/#q=php+parallel+processing. Или сохраните входные данные и компьютер с помощью другого внешнего скрипта с помощью cron или что-то еще.