Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
28 Апрель 2024, 21:37:12
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Длительность скрипта?

Страниц  :   Вниз
  Печать  
Автор Тема: Длительность скрипта?  (Прочитано 4205 раз)
0 Пользователей и 1 Гость смотрят эту тему.
BDP_BY
Гродненец
**

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 56


Всё у нас будет!

Просмотр профиля
« : 16 Июнь 2009, 14:23:10 »

Господа, прошу разъяснить мне один момент связанный с временем работы скрипта.
Есть условный скрипт a1.php длительность его работы может достигать 30 секунд. Мне хочется чтобы он поработал дольше, поэтому я его разделяю на 3 части и получаю в итоге a1.php, a2.php, a3.php. Каждый из этих скриптов уложится в 30 секунд, а потом принудительно будет переход к другому, т.е. один отработал а потом запустил другой и т.д. Так вот вопрос будет ли у этих скриптов общее время исполнения 90 секунд или так и останется 30. Запуск идет из браузера.
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #1 : 16 Июнь 2009, 14:29:00 »

Так, давайте по-порядку.

нафига вам надо что бы скрипт работал дольше? Тут некоторым приходится сидеть очень и очень долго, ибо есть жосткие требования по респонсу <2с.
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
RILLey_ELf
Гость
« Ответ #2 : 16 Июнь 2009, 14:33:59 »

я думаю вам стоит проверить свою задумку, это отнимет меньше времени, чем ожидание ответа здесь
в целом
три скрипта
<?
  abstract_php_sleep(30);
?>
запущенных подряд будут работать чуть дольше чем
<?
  abstract_php_sleep(90);
?>
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #3 : 16 Июнь 2009, 15:15:40 »

Я думаю проблема автора в том, что дефолтный таймаут его веб-сервера равен 30 сек, а его скрипт крутится подольше и, следовательно, вываливается по таймауту. Вот автор и решил таким задничным способом решить эту проблему, вместо того чтобы просто поменять цифру в конфиге веб-сервера.
Записан
BDP_BY
Гродненец
**

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 56


Всё у нас будет!

Просмотр профиля
« Ответ #4 : 16 Июнь 2009, 16:33:35 »

я думаю вам стоит проверить свою задумку, это отнимет меньше времени, чем ожидание ответа здесь
в целом
три скрипта
<?
  abstract_php_sleep(30);
?>
запущенных подряд будут работать чуть дольше чем
<?
  abstract_php_sleep(90);
?>
Спасибо за идею, а то сам как-то не дошёл до этого.

Цитировать
Я думаю проблема автора в том, что дефолтный таймаут его веб-сервера равен 30 сек, а его скрипт крутится подольше и, следовательно, вываливается по таймауту. Вот автор и решил таким задничным способом решить эту проблему, вместо того чтобы просто поменять цифру в конфиге веб-сервера.
Просто поменять не получиться, т.к. это надо иметь доступ чтобы это сделать. И к тому же это я делаю, как бы запас прочности. Со временем данных может стать очень много и это нужно будет как-то обрабатывать и скрипт время которому хватало может просто всего не успеть, а так есть запас.
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #5 : 16 Июнь 2009, 16:43:53 »

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

обычный способ обхода респонс-таймаутов заключается в том, что твой скрипт запускает на сервере фоновый процесс, который производит вычисления, и сразу возвращает на клиент страницу с JS, которая периодически дергает сервер на предмет завершения процесса вычислений
Записан
RILLey_ELf
Гость
« Ответ #6 : 16 Июнь 2009, 16:49:05 »

ajax отменили?
нафига дергать переодически?
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #7 : 16 Июнь 2009, 16:51:16 »

я написал общий механизм, реализация уже как угодно
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #8 : 16 Июнь 2009, 17:02:10 »

Не ajaxом единым!
Вариантов куча, просто изначальный подход в корне не верен. К тому же если респонс-тайм такой большой, может стоит подумать об оптимизациях?
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
BDP_BY
Гродненец
**

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 56


Всё у нас будет!

Просмотр профиля
« Ответ #9 : 16 Июнь 2009, 17:44:44 »

За советы конечно спасибо, но идея скрипта в удалении ненужных данных из БД. Нажимаем на кнопку и скрипт удаляет такие данные, например, как не используемые аккаунты и т.п. Конечно можно сделать один, поставить ограничение на количество и всё. Но если можно увеличить количество обработанных данных, то почему тогда не воспользоваться этим.
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #10 : 16 Июнь 2009, 17:49:31 »

И чем этот скрипт не ложится в фоновый процесс? Как ты собрался разбивать делиты на из бд на 30-секундные операции? И я вроде бы уже писал, что разбиение серверного скрипта на N частей не решит проблему респонс-таймаута.
Записан
tarantyl
Гродненец
**

Репутация: +13/-2
Offline Offline

Пол: Мужской
Сообщений: 129


Просмотр профиля WWW
« Ответ #11 : 16 Июнь 2009, 18:05:29 »

И чем этот скрипт не ложится в фоновый процесс? Как ты собрался разбивать делиты на из бд на 30-секундные операции? И я вроде бы уже писал, что разбиение серверного скрипта на N частей не решит проблему респонс-таймаута.
Согласен. Делаем лимит на удаление и запускаем кроном.... по почте получаем отчет, потом можно будет исходя из этих данных оптимально настроить интервал крона и лимит... Или критично удалять все данные сразу?
Записан

BDP_BY
Гродненец
**

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 56


Всё у нас будет!

Просмотр профиля
« Ответ #12 : 16 Июнь 2009, 18:06:29 »

Вариант не проидёт у меня уже все доступные из панели crony заняты, чтобы их увеличивать надо shell доступ получать, а для меня этот скрипт не особо критичен, чтобы ещё через shell делать. Вообщем, как наверное самый лучший вариант это сделать одним скриптом, установить ограничения и всё, ведь очистка БД мне не особо часто и нужна будет.

Добавлено: 16 Июнь 2009, 18:12:25
Я так понимаю за фоновый режим отвечает функция pcntl_fork. Я сейчас почитал по ней написано, что с Апачем не работает. Поэтому думаю мне это не подходит.
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #13 : 16 Июнь 2009, 18:17:42 »

ну на пхп вообще не стоит писать серьезный проект, там много чего не работает
Записан
RILLey_ELf
Гость
« Ответ #14 : 16 Июнь 2009, 18:20:43 »

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

я думаю афтар боится за те фрагменты до которых ему ещё очень далеко
удалять учётки пользователей... для чего?
тем более удаление старых учёток пользователей которое занимает больше 30 секунд?
неее, тут явно не хватает оптимизации
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #15 : 16 Июнь 2009, 18:25:10 »

Ява немножко объектно-ориентированный язык (в отличие от пхп Смеющийся ), и те же замыкания там делаются через анонимные и внутренние классы.
Когда они появились... ну хз, может быть в Java 1.0 ?  Подмигивающий
Записан
RILLey_ELf
Гость
« Ответ #16 : 16 Июнь 2009, 18:38:53 »

http://www.talios.com/pascal_gets_closures_before_java__why_hasnt_the_world_ende.htm
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #17 : 16 Июнь 2009, 18:43:38 »

И? Замыкания в яве есть - факт. То, что им хотят дать более простой синтаксис - пожалуйста.
Записан
RILLey_ELf
Гость
« Ответ #18 : 16 Июнь 2009, 18:55:39 »

я же не спорю, что есть; вопрос в юзабельности\используемости

в любом случае инструмент php достаточно богат возможностями для создания веб-приложений любой сложности
(я честно признаюсь, что сам предпочитаю RoR и знаю достаточно неплохо хорошо проблемы php;
собственно как знаю и проблемы java (скорость запуска всех серверов, миллиарды кода в настроечных файлах))
и дело в том, что для начинающего (коим является автор) всё таки не стоит сейчас менять язык

php точно позволяет то, что вы хотите
Записан
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #19 : 16 Июнь 2009, 19:00:05 »

@set_time_limit(0); - тебе в помощь

А вообще тебе нужно глянуть в делание демонов на PHP:
http://phpshki.com/2007/07/10/demon_na_php.html
http://habrahabr.ru/blogs/php/40432/
Записан

HTTP Error 404 - File or directory not found.
iddqd
Лёдчег
Почетный гродненец
*****

Репутация: +170/-10
Offline Offline

Пол: Мужской
Сообщений: 2275


Не уйдешь!

Просмотр профиля
« Ответ #20 : 16 Июнь 2009, 19:17:26 »

господа, пхп и яву попрошу тут не обсуждать
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #21 : 16 Июнь 2009, 21:38:00 »

[наболело]
Блядть, rilley_elf, ты уже заебал чушь нести. Найди какого одногруппника и еби ему мозг.
[/наболело]

Аффтар, я в своё время делал похожее, там правда миграция была из одной базы в другую (ну просто жуть как медленно). Сделал красивый прогрессбар, который ходил на сервак раз в 10 секунд, получал количество запроцесшенных данных и рисовал статистику. Работы, ну блин, на 30 минут.
Но вообще стоит обратить внимание на правильность базы. Я  конечно не знаю объёмов, структуры. Но что-то >30 секунд это жесточайше.
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
BDP_BY
Гродненец
**

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 56


Всё у нас будет!

Просмотр профиля
« Ответ #22 : 16 Июнь 2009, 22:15:05 »

Цитировать
Но вообще стоит обратить внимание на правильность базы. Я  конечно не знаю объёмов, структуры. Но что-то >30 секунд это жесточайше.
Дело в том, что я не очень хорошо себе представляю, что может сделать скрипт в БД за 30 секунд, к тому же сайт будет на другом хостинге. Поэтому я и пробую подстраховаться, вдруг данных будет очень много. А так БД я думаю у меня нормализована к 3 форме.

Добавлено: 16 Июнь 2009, 22:21:18
Спасибо за ссылки, но как я уже писал функция pcntl_fork у меня не будет работать, а в статьях тех про них пишется.
Записан
RILLey_ELf
Гость
« Ответ #23 : 16 Июнь 2009, 23:01:00 »

будет ли контроллер (сайт) разделён с БД или не будет
на скорость удаления по определенному by sql правилу повлиять не должно. не думаю, что вам потребуется каждую запись проверять внутри кода php "можно ли её удалять"
даже я бы сказал, что такая надобность в 90 процентах случаев говорит о неверности проектирования БД

кстати не сильно гоняйтесь за 3 формой
существуют примеры когда 3 форма только мешает

а насчёт скорости обработки запросов - так этого полно сравнений и описаний количества действий пер секунд
разработчики БД тоже меряются размерами половых органов,
и скорость обработки тех или иных запросов увеличивающие коэфициенты
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #24 : 17 Июнь 2009, 00:26:09 »

Цитировать
Дело в том, что я не очень хорошо себе представляю, что может сделать скрипт в БД за 30 секунд, к тому же сайт будет на другом хостинге. Поэтому я и пробую подстраховаться, вдруг данных будет очень много. А так БД я думаю у меня нормализована к 3 форме.
Нормализация не всегда гуд. При больших объёмах чаще делают плэйн таблицы. Вообщем зависит от задачи, ну это уже тема для отдельной дискуссии.
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #25 : 17 Июнь 2009, 11:51:17 »



@set_time_limit(0) - просто будет блокировать принудительное завершение скрипта web-сервером.
ты можешь организовать цикл до завершения всех необходимых действий и внутри его поставить abstract_php_sleep() для того, что бы скрипт не пожирал много процессорного времени. Так ты сможешь эмулировать многозадачность в PHP.
Либо двойной цикл, внутрений запускает то что нужно сделать, внешний бесконечный, тоже с  abstract_php_sleep(), так у тебя на серваке будет все время висеть демон, периодически занимающийся чисткой базы, только необходимо будет реализовать механизм завершения скрипта, если такой же скрипт уже запущен, что бы избежать запуска нескольких копий.
« Последнее редактирование: 17 Июнь 2009, 12:50:19 от coolasm » Записан

HTTP Error 404 - File or directory not found.
tarantyl
Гродненец
**

Репутация: +13/-2
Offline Offline

Пол: Мужской
Сообщений: 129


Просмотр профиля WWW
« Ответ #26 : 17 Июнь 2009, 12:52:44 »

Простите, что немного не по теме, но не могли бы мне кинуть ссылку на описание abstract_php_sleep(), что-то не пойму откуда это Грустный
Записан

coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #27 : 17 Июнь 2009, 12:57:11 »

Простите, что немного не по теме, но не могли бы мне кинуть ссылку на описание abstract_php_sleep(), что-то не пойму откуда это Грустный
Это не существующая фунукция PHP, под abstract_php_sleep - следует понимать любую функцию PHP останавливающую выполнение скрипта на заданое время (php_sleep()).
Записан

HTTP Error 404 - File or directory not found.
BDP_BY
Гродненец
**

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 56


Всё у нас будет!

Просмотр профиля
« Ответ #28 : 17 Июнь 2009, 16:43:00 »

Цитировать
@set_time_limit(0) - просто будет блокировать принудительное завершение скрипта web-сервером.
ты можешь организовать цикл до завершения всех необходимых действий и внутри его поставить abstract_php_sleep() для того, что бы скрипт не пожирал много процессорного времени.
Спасибо за идею, пока сделал просто, но думаю это мне ещё пригодиться.
Записан
BDP_BY
Гродненец
**

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 56


Всё у нас будет!

Просмотр профиля
« Ответ #29 : 23 Июнь 2009, 10:41:20 »

Цитировать
я тоже сталкивался с такой проблемой и подозреваю это все из-за экономии денег на нормальный хостинг
На нормальных хостингах, как правило, тоже есть ограничения по времени, но не 30 сек а 60. По крайне мере у большинства так.
Спасибо за ответ.
Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2024, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,191 секунд. Запросов: 19.