![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| lancelot555 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 19.2.2005 Репутация: нет Всего: нет |
и так.. есть файл содержащий некие слова по одному на каждой строке..
есть скрипт который берет каждое слово и на его основе генерит определеную информацию.. слов в файле от 2 до 20.. на каждое слово скрипт тратит около 4 часов.. нужно распараллелить работу скрипта так чтобы по всем словам генерация шла одновременно.. как такое реализовать --------------------
Hи что так не поpтит цель, как попадание! =) |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: нет Всего: 69 |
Многопоточности конечно нет, но если на никсах, то можно попробовать разделить скрипт на две части, первый файл читает спискок слов, второму файлу передаются эти слова. Т.е. читаешь список слов, и в цикле выполняешь exec на второй файл, который в качестве аргумента принимает слово. Только команду надо посылать такую, чтоб php сразу же переводился в фоновый режим, тогда у тебя в цикле откроются все слова практически одновременно.
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Вот есть такой костыль(имхо самый удобный костыль):
http://ru.php.net/manual/ru/function.pcntl-fork.php Однако в пхп многопоточности нет. Используй python ;) Тем более использовать пхп для подобных скриптов - это извращение. |
|||
|
||||
| G0rinich |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 21.8.2006 Репутация: нет Всего: 1 |
Подходите к делу проще.
Зачем реализовывать многопоточность средствами РНР, если этим можно заставить заниматься ОС? И под win и под nix из консоли можно запустить любое кол-во экземпляром одного и того же скрипта. Запускаем и пусть работают 20 одинаковых скриптов. При этом придется решить проблему, чтобы каждый скрипт работал со своим словом. Для этого слова лучше всего хранить в БД. Алгоритм следующий. Запускаем n копий скрипта. Все копии рвутся в базу. Первая дорвавшаяся блокирует таблицу, считывает запись, помечает ее считанной, разблокирует таблицу. Когда скрипт обработает взятое слово, то он опять рвется в базу, блокирует таблицу, помечает свое слово обработанным, берет следующее слово и разблокирует таблицу. Т.о. разные экземпляры скриптов в несколько потоков обрабатывают все слова и не мешают друг другу. ВАЖНО!!! Я не знаю что может скрипт делать 4 часа, но если он тратит столько времени, то он явно сильно напрягает систему. А если так, то несколько экземпляров такого скрипта скажут системе ЗАМРИ. Поэтому лучше обрабатывать слова по очереди. Web пауки так и пишутся. Информация собирается в несколько потоков, а разбирается только одним. Т.к. очень часто при этом приходится использовать Regexp, а это не малая нагрузка на процессор. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |