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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> распараллеливание работы скрипта 
:(
    Опции темы
lancelot555
Дата 4.11.2006, 04:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



и так.. есть файл содержащий некие слова по одному на каждой строке..
есть скрипт который берет каждое слово и на его основе генерит определеную информацию..
слов в файле от 2 до  20.. на каждое слово скрипт тратит около 4 часов..
нужно распараллелить работу скрипта так чтобы по всем словам генерация шла одновременно..
как такое реализовать  smile   smile 
--------------------
Hи что так не поpтит цель, как попадание! =)
PM MAIL   Вверх
-=Ustas=-
Дата 4.11.2006, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

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



Многопоточности конечно нет, но если на никсах, то можно попробовать разделить скрипт на две части, первый файл читает спискок слов, второму файлу передаются эти слова. Т.е. читаешь список слов, и в цикле выполняешь exec на второй файл, который в качестве аргумента принимает слово. Только команду надо посылать такую, чтоб php сразу же переводился в фоновый режим, тогда у тебя в цикле откроются все слова практически одновременно.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
nerezus
Дата 4.11.2006, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вот есть такой костыль(имхо самый удобный костыль):
http://ru.php.net/manual/ru/function.pcntl-fork.php

Однако в пхп многопоточности нет. Используй python ;)
Тем более использовать пхп для подобных скриптов - это извращение.


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


Новичок



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

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



Подходите к делу проще.
Зачем реализовывать многопоточность средствами РНР, если этим можно заставить заниматься ОС?
И под win и под nix из консоли можно запустить любое кол-во экземпляром одного и того же скрипта. Запускаем и пусть работают 20 одинаковых скриптов.
При этом придется решить проблему, чтобы каждый скрипт работал со своим словом. Для этого слова лучше всего хранить в БД.
Алгоритм следующий. Запускаем n копий скрипта. Все копии рвутся в базу. Первая дорвавшаяся блокирует таблицу, считывает запись, помечает ее считанной, разблокирует таблицу. Когда скрипт обработает взятое слово, то он опять рвется в базу, блокирует таблицу, помечает свое слово обработанным, берет следующее слово и разблокирует таблицу. Т.о. разные экземпляры скриптов в несколько потоков обрабатывают все слова и не мешают друг другу.


ВАЖНО!!!
Я не знаю что может скрипт делать 4 часа, но если он тратит столько времени, то он явно сильно напрягает систему. А если так, то несколько экземпляров такого скрипта скажут системе ЗАМРИ. Поэтому лучше обрабатывать слова по очереди.

Web пауки так и пишутся. Информация собирается в несколько потоков, а разбирается только одним. Т.к. очень часто при этом приходится использовать Regexp, а это не малая нагрузка на процессор.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

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


 




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


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

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