Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как разбить выполнение цикла на части? Обход времени выполнения скрипта 
V
    Опции темы
Just123
Дата 14.3.2012, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Доброго дня, 

Подскажите пожалуйста, как разбить выполнение цикла на несколько частей. Это нужно для обход времени выполнения скрипта.
Не хотелось бы использовать set_time_limit (0);

Код

        for ($i=1; $i <= $this->total_page; $i++) {
            $this->get_items($i);
        }



PM MAIL   Вверх
Vardoulacha
Дата 14.3.2012, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 11.8.2005

Репутация: 7
Всего: 8



хранить где-то, допустим в текстовом файле номер последней итерации, запускать скрипт по заданию cron выполнять очередную порцию и место остановки записывать в файл, при следующем запуске стартовать оттуда где остановились в прошлый раз
PM MAIL   Вверх
Just123
Дата 14.3.2012, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



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

PM MAIL   Вверх
cutwater
Дата 14.3.2012, 12:55 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



Цитата(Just123 @  14.3.2012,  10:26 Найти цитируемый пост)
Vardoulacha, Важно, чтобы скрипт выполнялся полностью сразу т.к. данные могут меняться с течением времени.


Пересмотреть архитектуру приложения.


--------------------
user posted image
PM MAIL   Вверх
Just123
Дата 14.3.2012, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Цитата

Пересмотреть архитектуру приложения.

//Здорово. Очень содержательно.  Пересмотр архитектуры наверняка даст ответ на вопрос " Как разбить выполнение цикла на части?"

Пересматривать нечего, это даже не приложение, а скрипт для парсинга. Страниц много, вот и выполняется долгое время.

Решение пока вижу только одно, разбить на N итераций и через каждые Y итераций выполнять header('Location: http://www.example.com/?итерация=№ последней итерации'); 


PM MAIL   Вверх
baldina
Дата 14.3.2012, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(Just123 @  14.3.2012,  13:11 Найти цитируемый пост)
через каждые Y итераций выполнять header

по-моему, нормально. хотя непонятно, почему
Цитата(Just123 @  14.3.2012,  11:10 Найти цитируемый пост)
Не хотелось бы использовать set_time_limit (0);


Добавлено через 1 минуту и 40 секунд
кстати можно попробовать PCNTL, хотя имхо овчинка выделки не стоит
PM MAIL   Вверх
Just123
Дата 14.3.2012, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Цитата

по-моему, нормально.

Угу, думаю, остановлюсь на нем.

Цитата

хотя непонятно, почему
Цитата

Не хотелось бы использовать set_time_limit (0);


Ограничение на хостинге.

Цитата

кстати можно попробовать PCNTL, хотя имхо овчинка выделки не стоит

С PCNTL не знаком, думаю ознакомлюсь позже, сейчас и header'a хватит по идее. Спасибо за наводку.

Это сообщение отредактировал(а) Just123 - 14.3.2012, 13:22
PM MAIL   Вверх
baldina
Дата 14.3.2012, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



Цитата(Just123 @  14.3.2012,  13:11 Найти цитируемый пост)
разбить на N итераций и через каждые Y итераций выполнять header

еще можно дергать при помощи AJAX. тогда какой-то вменяемый front-end можно слепить, например с прогресс-баром

Добавлено через 1 минуту и 13 секунд
да еще и параллельно выполнять итерации, если данные позволяют
PM MAIL   Вверх
Just123
Дата 14.3.2012, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Цитата

еще можно дергать при помощи AJAX. тогда какой-то вменяемый front-end можно слепить, например с прогресс-баром

о! А это идея! Сейчас правда к сожалению сроки ужимают, но при допиливании позже обязательно сделаю. Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.