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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Остановка php скрипта 
:(
    Опции темы
nepster
Дата 12.2.2013, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Возникла следующая проблема:
имеется некий пхп скрипт, который отрабатывает примерно 3000 секунд. 
Переехали на новый сервер, и получилось, так что скрипт останавливает свою работу примерно через 6 минут. 

Теперь в чем прикол:

итак php.ini
Цитата
max_execution_time = 0 
max_input_time        = -1 
memory_limit            = 512M


script.php
Цитата

ini_set('display_errors',1);    // отображать ошибки 
error_reporting(E_ALL);         // отображать ошибки 
set_time_limit(0); 


усложняем:
 - на локальном работает  (денвер)
 - на старом сервере работает 
 - НА НОВОМ ОСТАНАВЛИВАЕТСЯ ПРИМЕРНО ЧЕРЕЗ 6 МИНУТ

И при этом на новом сервере, аналогичный скрипт который выполняется примерно 800 секунд срабатывает на ура. 

еще чуть чуть усложним:
 - ошибок никаких нет, так же в html коде 
 - логи апача молчат 


и теперь джек пот супер лото усложение:
 - если на новом сервере через SSH  доступ, запустить скрипт из консольки он выполняется полностью. 


Подскажите пожалуйста в чем проблема, как это вооще возможно? 
PM MAIL   Вверх
Aliance
Дата 12.2.2013, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Немного не по теме, но все же - а что делает скрипт, который выполняется дольше 6 секунд? По идеи даже в кроне такого быть не должно.
PM MAIL WWW ICQ Skype   Вверх
krundetz
Дата 12.2.2013, 16:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата(nepster @  12.2.2013,  03:32 Найти цитируемый пост)
set_time_limit(0); 

она могла не установиться, если у хостера стоит запрет на изменение этого параметра из PHP
Цитата(Aliance @  12.2.2013,  10:23 Найти цитируемый пост)
а что делает скрипт, который выполняется дольше 6 секунд?

да все что угодно. У меня есть пара демонов на PHP, работающих намного долшье чем 6 секунд.

Это сообщение отредактировал(а) krundetz - 12.2.2013, 16:21


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
nepster
Дата 12.2.2013, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



у хотера есть разрешение, все нормально. 


то делает скрипт, просчитывает структуры пользователей и кеширует их.

Добавлено через 9 минут и 17 секунд
скрипт например 

Код

<?php
sleep(5000000000);
echo 1;



отработает

Добавлено через 11 минут и 10 секунд
таки добрался до ошибок:

Код
[Tue Feb 12 17:55:31 2013] [warn] [client 213.200.48.38] Timeout waiting for output from CGI script /var/www/incr/data/php-bin/php
[Tue Feb 12 17:55:31 2013] [error] [client 213.200.48.38] (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed

PM MAIL   Вверх
nepster
Дата 13.2.2013, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



подскажите пожалуйста как с этим ороться, никогда не встречал подобной ошибки.
Нашел несколько забугорных сайтов, но не могу понять в чем дело, что это такое ? 
PM MAIL   Вверх
ksnk
Дата 13.2.2013, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



nepster, Если в гугель забить строку с ошибкой, то через пару-тройку кликов можно попасть на объяснеение.

В конфиге апача стоит опция TimeOut на 6 секунд

Решений целый пучёк:

- менять параметр, путем ругательств с сапортом хостинга.
- выводить какую-то фигню в броузер не реже раза в 6 секунд
- запускать скрипт в консоли.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
krundetz
Дата 13.2.2013, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата(ksnk @  13.2.2013,  07:22 Найти цитируемый пост)
- менять параметр, путем ругательств с сапортом хостинга.

 smile зачем ругаться, продуктивнее же договориться

Цитата(ksnk @  13.2.2013,  07:22 Найти цитируемый пост)
- запускать скрипт в консоли. 

самый разумный и быстрый вариант, так как в случае переезда, первый вариант предется повторить по новой
Цитата(ksnk @  13.2.2013,  07:22 Найти цитируемый пост)
- выводить какую-то фигню в броузер не реже раза в 6 секунд

я правильно понимаю, что достаточно вызывать ob_flush() с интервалом в 6 секунд? Видимо наилучшим вариантом будет выделение таймера в отдельный поток.

Это сообщение отредактировал(а) krundetz - 13.2.2013, 09:57


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
ksnk
Дата 13.2.2013, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(krundetz @  13.2.2013,  09:53 Найти цитируемый пост)
зачем ругаться, продуктивнее же договориться

Ну это так,`готовься к худшему, надейся на лучшее`. Обычно, хостеры меняют параметры сервера с большим скрипом. Если это не vps, то на сервере держится целый комплект сайтов, которые используют те же параметры. 6 секунд - не дефолтное значение, значит была причина, по которой его поменяли...

Цитата(krundetz @  13.2.2013,  09:53 Найти цитируемый пост)
самый разумный и быстрый вариант

Угу. Про консоль я говорил, в смысле system, exec и т.д.  без ожидания возврата. Если они не закрыты, конечно.

Цитата(krundetz @  13.2.2013,  09:53 Найти цитируемый пост)
я правильно понимаю, что достаточно вызывать ob_flush() с интервалом в 6 секунд?

Обычно - да. Таймер в отдельный поток - это как ? Форк ? 
Если операция разбивается на несколько не долгих - можно и пробелы печатать между итерациями, наверное... 


Это сообщение отредактировал(а) ksnk - 13.2.2013, 10:57


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
nepster
Дата 13.2.2013, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



все нормально это vps.

Цитата

В конфиге апача стоит опция TimeOut



я вообще ничего не понимаю, есть еще 1 скрипт, который вполняется 2000 сек и все нормально. 

Полез в httpd.conf, закоментировал 

Код

#Timeout 120


скрипт выполнился. 

Всем ольшое спасибо. 
PM MAIL   Вверх
krundetz
Дата 14.2.2013, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата(ksnk @  13.2.2013,  10:56 Найти цитируемый пост)
Таймер в отдельный поток - это как ? Форк ? 

Да, через pcntl.
Цитата(ksnk @  13.2.2013,  10:56 Найти цитируемый пост)
Если операция разбивается на несколько не долгих - можно и пробелы печатать между итерациями, наверное... 

Тут проблема в том, что нам никто не гарантирует, что сами операция между которыми мы собираемся печатать пробелы будут длится меньше 6 секунд. То есть нужно подбирать итеративным путем на глаз, который будет зависеть от нагрузки на сервер. Поменяется нагрузка возможно нужно будет подбирать по новой. Поэтому отдельный поток на таймер.


Цитата(ksnk @  13.2.2013,  10:56 Найти цитируемый пост)
Обычно - да.


Цитата(ksnk @  13.2.2013,  10:56 Найти цитируемый пост)
пробелы печатать

А что мы не можем просто сбросить пустой буфер? Он обязательно должен быть чем то заполнен?

Цитата(nepster @  13.2.2013,  15:06 Найти цитируемый пост)
Всем ольшое спасибо.  

Пожалуйста. Успехов.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
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.

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


 




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


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

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