![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Есть сложный скрипт, который должен обрабатывать некоторые данные. Время обработки данных будет обычно всегда по несколько минут длиться. Скрипт будет запускаться через CRON каждую минуту или же раз в 5 минут.
Вопрос: Лучше писать этот скрипт на PHP или Perl? PHP ведь накладывает ограничение на время исполнения скрипта в 30 сек. Ясно, что это значение через php.ini можно изменить, но ведь всего сервера.... Впрочем, мне не нужно мой скрипт выполнять через веб-сервер. А устроит прямой запуск. Как его через Крон запускать? Так? php /etc/script.php В этом случае не будет ограничения на время выполнения? |
|||
|
||||
| -=Ustas=- |
|
||||||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Ну зачем же?!
Теперь смотри, время обработки - несколько минут, периодичность запуска - каждую минуту. Таким макаром сервак у тебя загнется через n-ое количество времени. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
||||||
|
|||||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
не загнется, т.к. далеко не всегда время обработки - несколько минут. |
|||
|
||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Можно и не только так сделать,всё это дело мона в бесконечный цикл засунуть... Но тогда переодичность упадёт.
Только в начале срипта поставь set_time_limit(0); А лучше всего использовать нативную прогу, которую ты будешь запускать через system или exec, строишь демон на PHP. -------------------- ГЫ... |
|||
|
||||
| AkimVital |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2005 Репутация: нет Всего: нет |
По своему опыту скажу:
похожие программы на ПХП жрут 98% Memory и дохрена эфирного времени процессора, в результате чего апач рискует в конце концов cдохнуть и перезапуститься (скрипт рискует неотработать полностью - для некоторых систем это критично) и это затягивается надолго. Если PHP - модуль CGI, результаты не столь плачевны. В то время как Perl предназначен для таких целей, быстрее выполняется и (по моей практике) не потребляет больше 5-10% Memory. Апач от него тоже вряд ли сдохнет =) Если Запускается кроном - однозначно не ПХП ибо крон выполняет команды(!) а пхп вызывается апачем (исключение опять же CGI-PHP) для этого в начале файла надо как и перлу прописать #!/usr/bin/php И естесно сделать его исполняемым... Это сообщение отредактировал(а) AkimVital - 10.12.2005, 22:26 |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Нет. (100% не дам, но где-то проскальзывало). Демона лучше вобще писать на Си. ПХП для этого, мягко говоря, не годиться. Перл - получше, но тоже не сильно удачно, по сравнению с сями. |
|||
|
||||
| AkimVital |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2005 Репутация: нет Всего: нет |
Это вообще смешно... Это сообщение отредактировал(а) AkimVital - 10.12.2005, 22:29 |
||||
|
|||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
дык, а разве нельзя дать команду: php myscript.php ? Разве не будет работать также, как perl myscript.pl ? |
|||
|
||||
| AkimVital |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2005 Репутация: нет Всего: нет |
можно, только ключ нужен, по-моему -r Добавлено @ 22:33 php -h Usage: php [options] [-f] <file> [args...] php [options] -r <code> [args...] php [options] [-- args...] -a Run interactively -c <path>|<file> Look for php.ini file in this directory -n No php.ini file will be used -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -f <file> Parse <file>. -h This help -i PHP information -l Syntax check only (lint) -m Show compiled in modules -r <code> Run PHP <code> without using script tags <?..?> -s Display colour syntax highlighted source. -v Version number -w Display source with stripped comments and whitespace. -z <file> Load Zend extension <file>. args... Arguments passed to script. Use -- args when first argument starts with - or script is read from stdin |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
раз можно, то какие проблемы? Даже с тем же демоном на пхп, построительство которого ты назвал смешным. Есть аргументы? |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Wowa php как демон тяжелый получается.
|
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
за счет чего? |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Не ориентирован ПХП на такие вещи. Да, может и на каких-то задачах это не будет заметно, но на других - да. |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
я плохо могу себе представить такую задачу, т.к. не вижу причин для тормозов скрипта. Пока мне их тут тоже никто не назвал.. |
|||
|
||||
| AkimVital |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2005 Репутация: нет Всего: нет |
Есть: хотя бы если это демон, он должен иметь хоть какуб-то степень свободы (запуска, завершения) - ага... модуль апача как раз тот случай !!! А остальное уже было сказано... читай форум внимательно. Добавлено @ 22:58
наприм, то же взаимодействие с базой данных, происходит через сокеты. Сделай 100 000 инсертов на ПХП и на перле и ты увидишь разницу... Это сообщение отредактировал(а) AkimVital - 10.12.2005, 22:59 |
||||
|
|||||
| Wowa |
|
||||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
причем тут модуль апача? Это надо быть идиотом, чтобы запускать через КРОН пхп-скрипт через АПАЧЕ. Добавлено @ 22:59
А в perl разве иначе?
Каких инклудов? |
||||||
|
|||||||
| AkimVital |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2005 Репутация: нет Всего: нет |
сори - опечатался - исправился - инсертов SQL.
Идиотом не надо быть, что бы ставить ПХП как модуль Апач - таких в мире гдето 70% в перле сам перл иначе работает... учи перл.... или просто попробуй, как я сказал.... Это сообщение отредактировал(а) AkimVital - 10.12.2005, 23:03 |
|||
|
||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
Естественно, т.к. это для другой нужды сделано. Мне никто не мешает иметь ПХП, как модуль апача для работы сайта и иметь простой PHP-интерпритатор для запуска всяких скриптов по обслуживанию сайта через крон. Добавлено @ 23:12
Ну такое лучше сразу через mysql BASE < base.sql |
||||
|
|||||
| AkimVital |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2005 Репутация: нет Всего: нет |
Я так понял это была тема дисскусии. Раз ты сам решил писать все на ПХП - вот и хорошо. Я все-го лишь пытался помочь. Скажу еще, что как-то я сделал подобный демон, который работал 1.5 часа (я по TOP'у смотрел) и грузил сервер так, что апач еле на запросы пользователей отвечал. Перл в той ситуации показал себя лучше. Добавлено @ 23:15
Не, ты ради интереса попробуй эту задачу решить и на ПХП и на перл. |
||||
|
|||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
зависит от того, как написано... Если написано полностью одинаково на обоих язык,т.е. используются аналогичные функции и алгоритм на 100% совпадает, то нужно бы выявить за счет чего пхп-скрипт в этом случае работал хуже. Мне вот это как раз и интересно. А перл я итак знаю, несколько лет на нем программировал. Добавлено @ 23:22
Он у тебя через тебя mod_php работал? |
||||
|
|||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Обоснуй. Когда мы запускаем пхп скрипт из под крона, мы его можем запустить как shell скрипт, указав обработчик, т.е. интерпретатор, так же как в Perl'e #!usr/bin и т.п. Апач тут вообще никакого отношения не имеет.
Ну смотри. Вот два варианта, Си и ПХП. Так. Очевидно, что ПХП более медленный чем Си. Так? Очевидно, что к примеру с сокетами он будет работать медленнее, хотя бы потому что его код будет транслироваться на код сей (грубо сказал, понимаю). Си же сам понимаешь более отлаженный язык, более низкоуровневые, и с сокетами работать будет быстрее... Если конкретно задачу, то - чтение порта. |
||||
|
|||||
| AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Скорее потому что Си не скриптовый язык... PHP скрипт, компилится при каждом запуске скрипта, а Си один раз (конечно не всегда)... WowaА что за действия должен скрипт выполнять? -------------------- ГЫ... |
|||
|
||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
шерстить базу, кое-что находить и изменяя снова записывать. Добавлено @ 16:48
Скорее или нет - это я и хочу выяснить. Если скрипт запускается раз в минуту, то мне совершенно все равно - скриптовый он или нет. Если было бы несколько вызовов в секунду, тогда это имело бы значение. А так.. |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Тут выгоднее все-таки сделать демона на сях, чтобы он не каждые 60 секунд занова грузился, а всегда висел в RAM. |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: 1 Всего: 290 |
из-за скорости работы с сокетами??? Вроде и на перл тогда можно.., раз говорите, что пзп медленнее |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
Возможно ты хотел сказать что будет медленнее обрабатывать данные, поступившие из сокета??? php ведь не бейсик-80, где каждая строка при выполнении транслировалась... В любом случае, я считаю это не критичным, потому что во многих случаях играет роль скорость разработки а не 2% выигрыш в скорости. Не на 286 сидим ведь... Очень разумно было сказано за выполнение скрипта как шелл-скрипта, с указанием в заголовке обработчика. Действительно апач тут вообще не учавствует, ДАЖЕ если пхп установлен как модуль(!). Правда это не сработает, если пхп установлен ТОЛЬКО как модуль(.so), и нет его бинаря в системе. А в общем, схема с использованием пхп как скриптового языка оправдывает себя на все 100%. (Mal Hack, не тебе Не будет хватать ресурсов - подымет вопрос снова, только уже в другом контексте. Так что Wowa, никого не слушай и делай как тебе нравится перл/пхп в общем дадут одинаковый результат. -------------------- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Не забывай, что демон на си уже исполняемый файл, а пхп еще должен транслироваться. Хорошо если как демон будет работать, а если через крон каждый раз транслироваться не есть хорошо. |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
Я сам нередко использую пхп в качестве быстрого написания шелл-скриптов. -------------------- |
|||
|
||||
| mxp100 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 2.10.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Из личного опыта
Был скрипт запускаемый из крона каждый 1 час он выполнял перенос таблицы (закачанный каталог товаров, около 80 тыс. записей) в основную таблицу на PHP4 скрипт выполнялся около 1-1.5 часа (хотя объемы не колосальные), тот же самый скрипт написанный на Perl выполнялся 10-20 мин. выводы делайте сами ;) P.S. Хотя в основном использую PHP как более удобный язык |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
[offtop]
mxp100, доброе утро!!! Почти год прошел с предыдущего поста [\offtop] -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| G0rinich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.8.2006 Репутация: 1 Всего: 1 |
Дефективно пишете дорогой ))) Из личного опыта. Для одного сайта писался скрипт, который загружал данные из xml файла (15Мб!) в БД. Выполнялось порядка 210К запросов. Разбор XML+занесение данных в БД после долгих мучений заняло 17 секунд на процессоре 800MHz. И все это на РНР!!! Wowa, скрипт можешь писать как на Perl, так и на РНР. На чем удобнее на том и пиши. Если конечно не упираешься во временные рамки и надо ресурсы экономить. Т.к. скрипт будет запускаться по крону, его по времени никто ограничивать не станет. РНР скрипт запущенный из консоли будет выполняться любое количество времени. В общем-то как и Perl скрипт. Только вначале скрипта обязательно надо #!/usr/bin/php или где он там на сервере лежит. Далеко не правда, что РНР будет хавать весь процессор, а Perl только чуть-чуть. При работе с БД процессор будет хавать именно БД, а не скрипт. На Perl решение может выглядеть красивее. И если ты очень хорошо знаешь Perl, то и быстрее. Если твой код на Perl выглядит как код на РНР, то можно с уверенностью сказать, что Perl ты не знаешь и писать на нем что-то серьезное не стоит. Такой код быстрее работать не будет. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
G0rinich, поддерживаю.
У меня была подобная по тяжеловестности задача, 5Mb XML, количество запросов к БД не мерил, но вероятнее всего возле 100К. Время выполнения в пределах одной-вух секунд. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
а почему не питон?
Это сообщение отредактировал(а) pythonwin - 30.10.2006, 14:30 |
|||
|
||||
| kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Wowa
Очень хорошая идея. Имеет практическую пользу и хорошие перспективы. IMHO. Если действительно PHP, который исполняется на сервере этим скриптом устанавливаются свойства C и без юзера любой скрипт с добавлением вашего демона будет самостоятельно запускаться. Это во первых экономия, а во вторых оптимизация и автоматизация. Обязательно применю его в своих исследованиях и буду докладывать о проблемах и успехах. |
|||
|
||||
| kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
Здесь нашел А может так лучше? Но пока оба скрипта и ваш и этот не работают. Что не так? Это сообщение отредактировал(а) kshyms - 8.1.2008, 09:50 |
|||
|
||||
| kshyms |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 303 Регистрация: 30.8.2006 Где: Душанбе Репутация: нет Всего: 0 |
30 1 * * 1 /home/site/script.php
мин час любой день любоого месяца еще такой cron оказывается есть Но самое главное оказывается у провайдера нужно спрашивать как его настраивать. То есть у всех по разному. Инфо к размышлению |
|||
|
||||
| Resha |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.3.2008 Репутация: нет Всего: нет |
Вот это жесть Проблема с перегрузкой решается просто: Запускаете скрипт - записываете файл с именем - pid php-процесса - в папочку (processes, например). По крону остается только запускать скрипт, который будет удалять файлы несуществующих процессов и добавлять необходимое количество новых процессов. Лично у меня было два скрипта - dispatcher и script. Первый запускает скрипты и отслеживает наличие необходимого количетва процессов скрипта script, второй выполняет нужные нам действия и по завершению запускает новый процесс script. Система работает, как часы Удачи |
|||
|
||||
| nerezus |
|
||||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
P.S. Эти ф-ии в пхп, кстати, написаны на C. Но к делу отношения это не имеет. |
||||||||
|
|||||||||
| w2w |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.9.2008 Репутация: нет Всего: 1 |
Я работаю только в Linux, в качестве скриптового языка для простеньких вещей использую bash, для сложненьких - php, пока проблем с тормозами и прочими вещами не замечал.
По ходу прочтения ветки заметил следующее: 1. Некоторые товарисчи не в курсе, что php можно использовать как cli инструмент. К примеру, можно сделать так:
Получим на выходе аналог функции phpinfo(), но для консоли. Отлично читаемый вывод, без хтмл тегов. Что характерно - никаких утечек памяти, никаких нагрузок на апач, более того, апача может и не быть вовсе. 2. Недоверие к php как быстрому скриптовому движку. Я довольно давно программирую на пхп, приходилось ковырять немерянное количество чужих исходных кодов и писать много своих. По личному опыту могу сказать, что большинство тормозов связано с кривым кодом. К сожалению, маркетинговый ход разработчиков php (я о том, что для программирования на php не нужно быть программистом 3. PHP разрабатывался только для WEB, поэтому для других целей не годится. Это уже из области мифов. Когда заходит об этом речь, я всегда вспоминаю древнейший миф о том, что sql запрос делающий выборку из нескольких таблиц, работает медленнее, чем из извлекающий данные из одной таблицы. Да пхп разрабатывался для веб, но это было много лун назад и воды с тех пор утекло никак не меньше, чем с тех времен когда на смену файловым БД пришли СУБД Удачи. |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: нет Всего: 36 |
можно поподробнее: - какая СУБД - характеристики сервера - сколько юзеров - каков размер траффика и какой канал |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |