php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 11/11/08 в 20:57 |
Кто как реализует? желательно с исходниками(хотяб в общих чертах). Сам очень хочу научится писать скрипты с мультизадачностью. Хотелось бы увидеть кто чем дышит
|
|
|
|
С нами с 28.02.03
Сообщения: 8542
Рейтинг: 1609
|
Добавлено: 11/11/08 в 21:09 |
|
|
Сдам место в подписи. Предложения в личку.
|
0
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 11/11/08 в 21:14 |
да, про перл в курсе но хотелось бы именно на php решения...
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7613
Рейтинг: 5760
|
Добавлено: 11/11/08 в 21:51 |
php 5 CURL
а вообще это псевдо.
нуно другие решения
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 11/11/08 в 22:05 |
_s_[sov] писал: | Кто как реализует? желательно с исходниками(хотяб в общих чертах). Сам очень хочу научится писать скрипты с мультизадачностью. Хотелось бы увидеть кто чем дышит |
1) В php не реализована многопоточность и не будет реализована судя по всему, по средствам pcntl реализована мультипроцесность, которая жрет памяти и времени процессора просто дохера.
2) Лучше не пиши на php программы, требующие параллелизма.
3) Читай http://php.net/pcntl до полного просветления и спроси гугль, примеров масса, если хочешь поиграться с этой кривой вещью.
|
|
|
|
c++,php кодинг
С нами с 22.10.05
Сообщения: 1098
Рейтинг: 558
|
Добавлено: 12/11/08 в 00:09 |
есть родительский скрипт, есть дочерние скрипты. родительский опрашивает дочерние с использованием неблокирующих (или как там по-русски) сокетов.
основной принцип.
|
|
|
|
С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579
|
Добавлено: 12/11/08 в 00:31 |
|
|
|
|
С нами с 01.12.04
Сообщения: 90
Рейтинг: 48
|
Добавлено: 12/11/08 в 02:39 |
Реализуем через апач. Скрипт создаёт задания в виде файлов и дёргает скрипты на своём же сервере, не ожидая ответа. Потом сидит и ждёт, пока дёрнутые скрипты прочитают файлы, отработают и отложат личинки. Работает в принципе везде, включая любой шаред хостинги и фрихосты, оверхед по сравнению с другими способами как ни странно небольшой.
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 12/11/08 в 03:24 |
Жги еще! Учи ребят ложить сервера
Образ апача в лучшем случае от 20 метров, запусти 100 копий своего чудо-скрипта, и увидишь как на сервере исчезнет 2 гигабайта памяти и скорее всего за этим исчезнет и сервер.
|
|
|
|
С нами с 01.12.04
Сообщения: 90
Рейтинг: 48
|
Добавлено: 12/11/08 в 04:19 |
Если выделить много памяти, то она кончится, это такое свойство компьютеров. От реализации многопоточности не зависит вообще никак.
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 12/11/08 в 04:50 |
alexf2000 писал: | От реализации многопоточности не зависит вообще никак. |
Все понятно, дискуссию на этом я с тобой закончу.
|
|
|
|
С нами с 01.12.04
Сообщения: 90
Рейтинг: 48
|
Добавлено: 12/11/08 в 19:16 |
xreload писал: | Все понятно, дискуссию на этом я с тобой закончу. |
А жаль. Я думал ты какой-нибудь свой способ сабжа напишешь. Я бы тогла попросил указать, сколько там памяти выделяется на 1 поток и по калькулятору точно вычислил бы, сколько их надо запустить, чтобы сожрались 2 гига памяти.
|
|
|
|
С нами с 03.05.07
Сообщения: 801
Рейтинг: 825
|
Добавлено: 13/11/08 в 00:11 |
И нахуй сдался твой способ, если есть pcntl? Типа многопоточность для нищих, у кого нет денег на сервер с нормальным конфигом?
|
|
|
|
С нами с 03.05.07
Сообщения: 801
Рейтинг: 825
|
Добавлено: 13/11/08 в 00:19 |
По сабжу - http://www.php.net/pcntl тут всё описано более чем подробно, с примером в 10 строк. Другое дело, что с ней делать потом? Обычно через многопоточность решают задачи, разделяя их между потоками. В большинстве случаев, это какие-нибудь парсеры и т.п., берущие данные из базы. Это решается по типу:
Код: |
$sql->query("UPDATE `items` SET `child`=".$this->child." WHERE `child`=-1 LIMIT 1");
if (!$item_id=$sql->assoc_query("SELECT `id` FROM `items` WHERE `child`=".$this->child,"id"))
return false;
$sql->query("UPDATE `items` SET `child`=-2 WHERE `id`=$item_id");
return $item_id;
|
Это пример того, как разделять записи между потоками. В данном случае, каждый поток получит уникальный item_id, изначально у всех необработанных записей стоит child=-1, у всех обработанных - child=-2
|
|
|
|
127.0.0.1
С нами с 26.04.06
Сообщения: 1092
Рейтинг: 557
|
Добавлено: 13/11/08 в 01:32 |
я реализовывал пять потоков тупо через ифреймы
создается ифрейм с src="script.php?какие-то параметры"
после отработки ифрейма скрипт выводит простой ява-скрипт, разрушаюший элемент <iframe>
вот вообщем-то и все
параметры впрочем передевать черем файлы,скажем
thread1.txt
thread2.txt
и тд
и пусть каждый скрипт в фрейме читает свой файл по передаваемому номеру файла.
|
|
|
|
С нами с 01.12.04
Сообщения: 90
Рейтинг: 48
|
Добавлено: 15/11/08 в 01:03 |
CJLOG, и нахуй сдался твой pcntl, если его нету? Типа многопоточность для тупых, кто не понимает что бывают другие хостинги, кроме собственных серверов и другие задачи которые надо на этих хостингах решать.
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 15/11/08 в 02:53 |
xreload писал: | Жги еще! Учи ребят ложить сервера
Образ апача в лучшем случае от 20 метров, запусти 100 копий своего чудо-скрипта, и увидишь как на сервере исчезнет 2 гигабайта памяти и скорее всего за этим исчезнет и сервер. |
ты не путаешь ничего про апач?
у меня вчера tds обслужила около 7м http запросов..
памяти на сервере 2гиг
по твоей логиге памяти явно мало
или я тебя не правильно понял?
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 15/11/08 в 19:30 |
atrius писал: | ты не путаешь ничего про апач?
у меня вчера tds обслужила около 7м http запросов..
памяти на сервере 2гиг
по твоей логиге памяти явно мало
или я тебя не правильно понял? |
Вот именно, обслужила tds. Чувствуешь разницу между весящей копией apache, которая может так провисеть минут 10 делая что-то, и скриптом tds, который запускается на сотые доли секунды, чтобы послать редирект? Вот поэтому 7м трафа для тдс обслужить это не проблема.
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 17/11/08 в 22:29 |
ак вот нахуярить то процесов можно, а если ситуация такая. есть парсер и 10 паг гугла для примера. то есть 10 потоков запускаю. каждый поток ебошит свою пагу. а как потом их связать? чета как то это не очень ясно. про писинтл_форк я читал многократно но пока ниче вразумительнова не понял... растолкуйте братцы
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 18/11/08 в 23:30 |
Стукни ко мне 3363семь044один, объясню.
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 24/11/08 в 08:28 |
стучу - никто не отвечает...
|
|
|
|
С нами с 01.03.07
Сообщения: 304
Рейтинг: 223
|
Добавлено: 26/11/08 в 01:59 |
тык парсеры можно запускать не в вебе через апач а через консоль php например
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 26/11/08 в 09:38 |
_s_[sov] писал: | ак вот нахуярить то процесов можно, а если ситуация такая. есть парсер и 10 паг гугла для примера. то есть 10 потоков запускаю. каждый поток ебошит свою пагу. а как потом их связать? чета как то это не очень ясно. про писинтл_форк я читал многократно но пока ниче вразумительнова не понял... растолкуйте братцы |
Как вариант результаты можно в базюльку складывать
Главное помнить, что на слабом или загруженном железе mysql - не лучший вариант
Хотя если ее грамотно настроить и расставить индексы, то будет чудо =)
|
|
|
|