Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];

Вниз

Многопоточность в пхп, как лучше сэмулировать   Найти похожие ветки 

 
Nous Mellon_   (2008-06-30 11:51) [0]

Доброе время суток, возник вопрос для спецов в php и администрировании. Есть скрипт -- делает всякие выборки из мускул базы и создает файлики. Я бы хотел его сильно распараллелить. Есть мощный ксеон хочу пустить этот скрипт в n потоков так как друг от друга они не зависят. Вопрос -- как лучше сэмулировать многопоточность в пхп? Просто запусков 10 процессов фоном или лучше с помощью сокетов. Важно, именно с позиции скорости, как будет быстрее) Мб разницы особой вообще нет?


 
McSimm ©   (2008-06-30 11:55) [1]

Что значит "с помощью сокетов" ?
Скрипт из командной строки запускается или mod_php ?


 
Nous Mellon_   (2008-06-30 12:03) [2]

Ну во всех статьях в которых освещается проблема многопоточности в пхп, приводят в пример реализацию на неблокируемых сокетах. Я пытаюсь выяснить быстрее ли это чем просто n копий процесса пустить.
Скрипт пускается по крону


 
wicked ©   (2008-06-30 12:08) [3]

через http://php.net/pcntl-fork


 
Nous Mellon_   (2008-06-30 12:20) [4]

2wicked, спасибо, если можно чуть подробнее о преимуществах перед 2мя указанными способами


 
McSimm ©   (2008-06-30 12:23) [5]

Просто запускать несколько экземпляров, зачем тут fork ? Лишние проблемы с отслеживанием детей и их количества.

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


 
Nous Mellon_   (2008-06-30 12:34) [6]

Спасибо, Максим. Я просто чего боюсь, пишут что при запуске параллельных процессов очень жестоко тратится память 15мб на каждый процесс, с другой стороны у меня и так там выборки некислые происходят, так что думаю выделенная память будет использована в любом случае...


 
McSimm ©   (2008-06-30 12:40) [7]

да, память тратится, если это действительно будет критично, то надо стоит посмотреть в сторону fork

Но при этом надо учитывать, что память чаще всего тратится из-за не очень экономного ее расхода в скрипте и правильно написанный скрипт сэкономит на порядки больше чем система при fork`ах
И второе - неправильно написанный механизм fork`ов может привести к большим проблемам, надо четко понимать его работу как с точки зрения ОС, так и особенности применительно к PHP


 
Nous Mellon_   (2008-06-30 14:21) [8]

ок, наверно стоит пооптимизировать скрипт и взять серв с 8гигами) Спасибо за помощь!


 
Мазут Береговой ©   (2008-06-30 18:26) [9]

А не проще ли сделать вебсервис и запускать кажды запрос на него - IIS самостоятельно создаст отдельные потоки для каждого запроса?


 
Ega23 ©   (2008-06-30 19:02) [10]

GCI - FastCGI?


 
Nous Mellon_   (2008-06-30 23:52) [11]

варианты переписать их пхп слишкои трудоемки и пока не рассматриваются)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
1-1196746496
AndreyRu
2007-12-04 08:34
2008.08.17
Ожидание освобождения файла


2-1215759810
TUserClass
2008-07-11 11:03
2008.08.17
"Полосатый" DBGrid и несколько выделенных записей ...


15-1214887617
Knight
2008-07-01 08:46
2008.08.17
Как получить из файла php путь к этому файлу?


2-1215972445
Дима
2008-07-13 22:07
2008.08.17
Ошибка консольного приложения, при расчете CRC32 суммы?


2-1215884192
savyhinst
2008-07-12 21:36
2008.08.17
Маска





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский