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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа скрипта в фоновом режиме, set_time_limit 
V
    Опции темы
CyClon
Дата 18.4.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нужно запустить скрипт скрипт, который будет работать долго и нудно (минут 30). С этим я справился так:

Код
set_time_limit(0);
ignore_user_abort(1);


В теории, скрипт должен работать до конца. На практике все иначе - скрипт виснет, то есть выполняется не до конца.

В чем может быть прчина подвисания? На разных хостингах живет по разному...

Я что подумал, может ли это быть из за LogSystem... У меня после каждого действия идет записать в файл (Отчет по действию [удача/неудача] и т.д.). Этих действий в скрипте 5 000 - 10 000, но он максимум 2 500 выполняет, потом пишет в файл 'SLEEP-2', соответственно затем команда sleep(2) и больше ничего нет...

Как продлить скрипту жизнь / снять с него нагрузку, чтобы жил дольше?


--------------------
user posted image
PM   Вверх
-=Ustas=-
Дата 18.4.2007, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

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



CyClon, во-первых, смотреть логи апача. Во-вторых, смотря что скажут логи апача...


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
CyClon
Дата 20.4.2007, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Логи апача не нашел :(

В общем, посмотрел логи скрипта. Он пишет время каждого действия, действие идет одно за другим без задержки...

Короче старт ...723 секунды, зависание в 923 секунды... Ровно 200 секунд разница... Мне кажется это ограничение хоста, который забил на мой set_time_limit. Что делать?


--------------------
user posted image
PM   Вверх
GZep
Дата 20.4.2007, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


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

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



Цитата(CyClon @  20.4.2007,  21:47 Найти цитируемый пост)
забил на мой set_time_limit. Что делать? 

Тут, уважаемый странник, есть 2 пути:
  • Менять хост, на другой, где разрешено изменение этой настройки. (это долгий и нудный путь)
  • Ломать нафиг текущий хост, залезать в php.ini и безобразничать там. (тернистый путь, зато весело! smile )
В путь...


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
savage
Дата 20.4.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Запускай скрипт из консоли php -/ трали вали. Потому как выполнение твоего скрипта обрывает WEB сервер, у него тоже есть тайм лимит на висящие процессы.

Это сообщение отредактировал(а) savage - 21.4.2007, 09:23
PM MAIL   Вверх
CyClon
Дата 21.4.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В том и дело что скрипт запускается другим скриптом через fsockopen.

А, если сделать не 1 запуск а 10 запусков скрипта. Они будут работать нормально или мешать друг другу будут?


--------------------
user posted image
PM   Вверх
CyClon
Дата 21.4.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Разбил запросы сервера и теперь одновременно запускаю не один скрипт, а 2-10 скриптов. Данных меньше каждому в n раз соответственно. Вроде пашет.


--------------------
user posted image
PM   Вверх
CyClon
Дата 22.4.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
function sStart()
{
    exec('nohup php -f ' . __FILE__ . ' &');
}


Код
if (...) {
    sStart();
}


Добавлено через 4 минуты и 2 секунды
Кстати проблема была в апаче - у него свой timeout... А из PHP скрипта его помоему никак не изменить, поэтому запускаемся мимо апача.

Это сообщение отредактировал(а) CyClon - 22.4.2007, 20:55


--------------------
user posted image
PM   Вверх
woin
Дата 22.4.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(CyClon @  22.4.2007,  20:55 Найти цитируемый пост)
Кстати проблема была в апаче - у него свой timeout... А из PHP скрипта его помоему никак не изменить, поэтому запускаемся мимо апача.

А как это - мимо апачи? Скрипт без него сможет работать?
PM MAIL   Вверх
savage
Дата 22.4.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

А как это - мимо апачи? Скрипт без него сможет работать? 

А почему не сможет то? Интерпретатору отдали файл вот он его и обрабатывает, какая разница кто его отдал: апач или пользователь из консоли или другая программа. Ну правда некоторые переменные доступны не будут - ну дк это не беда.
PM MAIL   Вверх
CyClon
Дата 24.4.2007, 15:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Немного иначе сделал теперь:

Код
    $fp = popen('php -f ' . __FILE__ . ' &', 'r');
    pclose($fp);


Чтобы скрипт просто запускался, ибо если юзать exec то он не только запускает скрипт, но и ожидает результаты выполнения. + Более широкая совместимость, ибо все привыкли прописывать в disable_functions: exec, system. Про popen иногда забывают )


--------------------
user posted image
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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