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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Долгоиграющий скрипт. CRON-запуск каждую минуту. PHP или Perl ? 
:(
    Опции темы
G0rinich
Дата 27.10.2006, 11:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(mxp100 @  27.10.2006,  03:57 Найти цитируемый пост)
Из личного опыта
Был скрипт запускаемый из крона каждый 1 час
он выполнял перенос таблицы (закачанный каталог товаров, около 80 тыс. записей) в основную таблицу
на PHP4 скрипт выполнялся около 1-1.5 часа (хотя объемы не колосальные),
тот же самый скрипт написанный на Perl выполнялся 10-20 мин.
выводы делайте сами ;)
P.S. Хотя в основном использую PHP как более удобный язык


Дефективно пишете дорогой )))
Из личного опыта. Для одного сайта писался скрипт, который загружал данные из xml файла (15Мб!) в БД. Выполнялось порядка 210К запросов. Разбор XML+занесение данных в БД после долгих мучений заняло 17 секунд на процессоре 800MHz. И все это на РНР!!!

Wowa, скрипт можешь писать как на Perl, так и на РНР. На чем удобнее на том и пиши. Если конечно не упираешься во временные рамки и надо ресурсы экономить. Т.к. скрипт будет запускаться по крону, его по времени никто ограничивать не станет. РНР скрипт запущенный из консоли будет выполняться любое количество времени. В общем-то как и Perl скрипт. Только вначале скрипта обязательно надо #!/usr/bin/php или где он там на сервере лежит. Далеко не правда, что РНР будет хавать весь процессор, а Perl только чуть-чуть. При работе с БД процессор будет хавать именно БД, а не скрипт. На Perl решение может выглядеть красивее. И если ты очень хорошо знаешь Perl, то и быстрее. Если твой код на Perl выглядит как код на РНР, то можно с уверенностью сказать, что Perl ты не знаешь и писать на нем что-то серьезное не стоит. Такой код быстрее работать не будет.
PM MAIL   Вверх
IZ@TOP
Дата 27.10.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

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



G0rinich, поддерживаю.
У меня была подобная по тяжеловестности задача, 5Mb XML, количество запросов к БД не мерил, но вероятнее всего возле 100К. Время выполнения в пределах одной-вух секунд.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
pythonwin
Дата 30.10.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



а почему не питон? smile


Это сообщение отредактировал(а) pythonwin - 30.10.2006, 14:30
PM WWW GTalk Jabber   Вверх
kshyms
  Дата 7.1.2008, 09:15 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Wowa
 
Цитата

раз можно, то какие проблемы? Даже с тем же демоном на пхп, построительство которого ты назвал смешным. Есть аргументы? 

 Очень хорошая идея. Имеет практическую пользу и хорошие перспективы. IMHO. Если действительно PHP, который исполняется на сервере этим скриптом устанавливаются свойства C  и без юзера любой скрипт с добавлением вашего демона будет самостоятельно запускаться. Это во первых экономия, а во вторых оптимизация и автоматизация. Обязательно применю его в своих исследованиях и буду докладывать о проблемах и успехах. 
PM MAIL WWW Skype   Вверх
kshyms
Дата 8.1.2008, 09:48 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

<?php

// Файл содержащий рандомные фразы разделённых "rn" (каждая фраза на новой строке)
$FileName = "file.txt";

$FHandle = file($FileName);

// Работаем вечно (выдаёт ошибку при safe_mode=1, @ для подавления)
@set_time_limit(0);

// Создание сокета TCP: resource socket_create(1, 2, 3);
// 1) AF_INET - семейство протокола или домен. Для соединений
// осуществляемых через интернет используется AF_INET,
// для UNIX используется AF_Unix (но об этом позже)
// 2) SOCK_STREAM - обычно используется для TCP (SOCK_DGRAM - UDP)
// 3) Протокол для TCP - SOL_TCP, UDP - SOL_UDP
// возвращает дескриптор сокета
if(($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) nc 127.0.0.1 666

Здесь нашел А может так лучше? Но пока оба скрипта и ваш и этот не работают. Что не так?

Это сообщение отредактировал(а) kshyms - 8.1.2008, 09:50
PM MAIL WWW Skype   Вверх
kshyms
Дата 12.1.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



30 1 * * 1 /home/site/script.php
мин час любой день любоого месяца
еще такой  cron оказывается есть
Но самое главное оказывается у провайдера нужно спрашивать как его настраивать. То есть у всех по разному. Инфо к размышлению smile 
PM MAIL WWW Skype   Вверх
Resha
Дата 23.10.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(AkimVital @ 10.12.2005,  22:22)
По своему опыту скажу:
похожие программы на ПХП жрут 98% Memory и дохрена эфирного времени процессора, в результате чего апач рискует в конце концов cдохнуть и перезапуститься (скрипт рискует неотработать полностью - для некоторых систем это критично) и это затягивается надолго. Если PHP - модуль CGI, результаты не столь плачевны.
В то время как Perl предназначен для таких целей, быстрее выполняется и (по моей практике)  не потребляет больше 5-10% Memory. Апач от него тоже вряд ли сдохнет =)

Если Запускается кроном - однозначно не ПХП ибо крон выполняет команды(!) а пхп вызывается апачем (исключение опять же CGI-PHP)

для этого в начале файла надо как и перлу прописать 
#!/usr/bin/php
И естесно сделать его исполняемым...

Вот это жесть smile Где ж вы такого начитались smile У PHP уже много-много лет есть нормальный CLI smile И не надо там никуда ничего менять smile Единственное, нужно отследить, чтобы все пути прописывались через dirname(__FILE__) . "/..." (т.е. чтобы пути были относительны выполняемого скрипта, а не рабочей директории shell'а).

Проблема с перегрузкой решается просто:
Запускаете скрипт - записываете файл с именем - pid php-процесса - в папочку (processes, например). По крону остается только запускать скрипт, который будет удалять файлы несуществующих процессов и добавлять необходимое количество новых процессов.

Лично у меня было два скрипта - dispatcher и script. Первый запускает скрипты и отслеживает наличие необходимого количетва процессов скрипта script, второй выполняет нужные нам действия и по завершению запускает новый процесс script.

Система работает, как часы smile Причем можно с легкостью регулировать количество процессов script.

Удачи smile
PM MAIL   Вверх
nerezus
Дата 22.11.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Цитата

Вопрос: Лучше писать этот скрипт на PHP или Perl?
 Нет разницы.

Цитата

А лучше всего использовать нативную прогу, которую
 Смысл?

Цитата

Wowa php как демон тяжелый получается.
 Это некритично. Но вот ограничения пхп не позволяют создавать демоны удобно. Как минимум нет потоков.

Цитата

Очевидно, что к примеру с сокетами он будет работать медленнее, хотя бы потому что его код будет транслироваться на код сей (грубо сказал, понимаю). Си же сам понимаешь более отлаженный язык, более низкоуровневые, и с сокетами работать будет быстрее...
 Лол. Как раз работа с сокетами, базойи т.д. будет одинаковой, т.к. задержка в них не зависит от языка, а связана с внешними факторами.

P.S. Эти ф-ии в пхп, кстати, написаны на C. Но к делу отношения это не имеет.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
w2w
Дата 7.12.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я работаю только в Linux, в качестве скриптового языка для простеньких вещей использую bash, для сложненьких - php, пока проблем с тормозами и прочими вещами не замечал. 
По ходу прочтения ветки заметил следующее:
1. Некоторые товарисчи не в курсе, что php можно использовать как cli инструмент. К примеру, можно сделать так:
Код

echo -e '#!/usr/bin/php\n\n <?\nphpinfo(); \n?>' > /tmp/myphp.sh
chmod +x /tmp/myphp.sh
/tmp/myphp.sh

Получим на выходе аналог функции phpinfo(), но для консоли. Отлично читаемый вывод, без хтмл тегов.
Что характерно - никаких утечек памяти, никаких нагрузок на апач, более того, апача может и не быть вовсе.

2. Недоверие к php как быстрому скриптовому движку. Я довольно давно программирую на пхп, приходилось ковырять немерянное количество чужих исходных кодов и писать много своих. По личному опыту могу сказать, что большинство тормозов связано с кривым кодом. К сожалению, маркетинговый ход разработчиков php (я о том, что для программирования на php не нужно быть программистом smile ) рикошетом ударил и по самому php в виде Эвереста никуда не годного кода. У меня же есть примеры совсем другого характера. Например, у меня отлично работает биллионговая система подсчета интернет трафика полностью написанная на пхп. Машину практически не грузит. 

3. PHP разрабатывался только для WEB, поэтому для других целей не годится. Это уже из области мифов. Когда заходит  об этом речь, я всегда вспоминаю древнейший миф о том, что sql запрос делающий выборку из нескольких таблиц, работает медленнее, чем из извлекающий данные из одной таблицы. Да пхп разрабатывался для веб, но это было много лун назад и воды с тех пор утекло никак не меньше, чем с тех времен когда на смену файловым БД пришли СУБД smile Сейчас php это намного более мощный инстумент, чем просто движок для web.

Удачи.


PM MAIL   Вверх
pythonwin
Дата 8.12.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(w2w @  8.12.2008,  00:36 Найти цитируемый пост)
У меня же есть примеры совсем другого характера. Например, у меня отлично работает биллионговая система подсчета интернет трафика полностью написанная на пхп. Машину практически не грузит. 

можно поподробнее:
 - какая СУБД
 - характеристики сервера
 - сколько юзеров
 - каков размер траффика и какой канал


PM WWW GTalk Jabber   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1126 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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