Просмотр полной версии : Многопоточность в Php
Тут идея пришал одна по релазации многопоточности в php путём клона кода
<?php
echo "hello";
echo '<html>...ect';
<?php
$go = $_POST['go']; //пуск
$potok = $_POST['potok']; //сколько потоков
$numberscript = n; // номер скрипта
$a = $potok - $numberscript;
if(!$go, $a >= 0)
{
echo "ok";// любой код при работе с массивами можно прибавить $numberscript таким образом разбив задачу на потоки
}
?>
<?php
$go = $_POST['go']; //пуск
$potok = $_POST['potok']; //сколько потоков
$numberscript = n; // номер скрипта
$a = $potok - $numberscript;
if(!$go, $a >= 0)
{
echo "ok";// любой код при работе с массивами можно прибавить $numberscript таким образом разбив задачу на потоки
}
?>
<?php
$go = $_POST['go']; //пуск
$potok = $_POST['potok']; //сколько потоков
$numberscript = n; // номер скрипта
$a = $potok - $numberscript;
if(!$go, $a >= 0)
{
echo "ok";// любой код при работе с массивами можно прибавить $numberscript таким образом разбив задачу на потоки
}
?>
...........
<?php
$go = $_POST['go']; //пуск
$potok = $_POST['potok']; //сколько потоков
$numberscript = n; // номер скрипта
$a = $potok - $numberscript;
if(!$go, $a >= 0)
{
echo "ok";// любой код при работе с массивами можно прибавить $numberscript таким образом разбив задачу на потоки
}
?>
Сделал небольшой набросочек
ИМХО должно работать???!!!
Костыль на костыле костылем погоняет.
Зачем нужна многопоточность на пхп? Всякие бруты и т.д.? Тогда зачем ПХП? Питон в лапы(или перл для извращенцев) и вперед на мины. Ибо уже куча модулей.
А тем, кто не хочет учить питон, предлагаю курить доки про форки.
2nerezus: Я же написал на многопоточность на php... Конечно согласен, что реализация путем клонирования кода не самая лучшая...
Для чего надо??? Например: написать сокс чекер на php в потоков 50-100
2ZaCo: Нет не наркоман
2St__one 1) у тебя в коде вложенные конструкции начала пхп-кода 2) я не пойму ка кты решил этим делать многопоточность... с таким же успехом можно позапускать несколько копий пхп. а тут у тебя код последовательно выполняется. или я дурак. какой n?? я не понимаю
Для чего надо??? Например: написать сокс чекер на php в потоков 50-100 форком
Хм, чё-то так много написал... а разве нельзя было в цикл поставить. тоже самое было бы.
fucker"ok
30.09.2006, 19:52
А мне проще 5 раз скрипт запустить. Вот вам и многопаточность :d
2ZaCo: не закрыл, торопился это лишь набросок, чтобы понять мысль
n это номер скрипта(0, 1, 2 .... так далее) )))
2Dr.Check: цикл будте выполняться послелодвательно
2fucker"ok: а 100 проще?
http://www.stableversion.com/2006/04/17/multithread-php/
вот тебе нормальная "многопоточность", хватит извращаться
2KSURi это еще хуже :)
2St__one полный бред понимаешь?
2KSURi это еще хуже :)
Кто тебе поведал? Конечно неблокирующим вводом\выводом в т.ч. в/из сокетов многопоточность в полном смысле слова заменить нельзя, но для подавляющего большинства всех задач, которые захотят решать местные Хакеры этого будет вполне достаточно
2KSURi это еще хуже +1, такого бреда давно не видел )
На каком – то сайте видел вот такой пример «многопоточности». Тут естественно идёт симуляция, т.к. в php многопоточности нет. Пример никогда не использовал, т.к. так и не встретился с задачей в которой это хоть чем то помогло.
config.php
// путь, где расположены скрипты
$path = http://domain.com/path/;
// число потоков
$max_threads = 20;
launcher.php
require_once(”config.php”);
// инициализация
$sockets = array();
$done = false;
// будем работать, к примеру с набором
// ключевых слов
$keywords = fopen(”keywords.txt”, “r”);
// приступаем к многопоточной работе
while (!$done)
{
// если обнаружен файл,
// то прекращаем выполнение скрипта
if (file_exists(”stop-file”))
die;
// если число запущенных потоков меньше
// разрешенного максимума
// то запускаем потоки еще
if ($max_threads > count($sockets))
{
if (!feof($keywords))
{
$buffer = array();
// читаем ключевое слово
// в реальности в этот массив можно
// положить очень много всего
// а не только одно ключевое слово…
$buffer[] = trim(fgets($keywords));
// задаем данные для запуска сокета
// request.php - это тот файл,
// которые делает “дело”
$query_url = $path . “request.php”;
$url_info = parse_url($query_url);
$url_info[port] = ($url_info[port]) ? $url_info[port] : 80;
$url_info[path] = ($url_info[path]) ? $url_info[path] : “/”;
$url_info[query] = ($url_info[query]) ? “?” . $url_info[query] : “”;
// пакуем данные для передачи
// в генерирующий скрипт
// использование serialize очень удобно,
// так как позволяет
// залить в request.php мегабайты данных
$request = serialize($buffer);
// формируем запрос для передачи по сокету
$query = “POST ” . $url_info[path] . ” HTTP/1.1\r\n”;
$query = $query . “Content-Type: text/xml\r\n”;
$query = $query . “Host: ” . $url_info[host] . “\r\n”;
$query = $query . “Content-length: ” . (strlen($request)) . “\r\n\r\n”;
$query = $query . $request;
// создаем сокет, переводим его
// в неблокирующий режим и запускаем
// обработчик запросов
$errno = 0;
$error = “”;
$socket = fsockopen($url_info[host], $url_info[port], $errno, $error, 30);
stream_set_blocking($socket, 0);
stream_set_timeout($socket, 3600);
fputs($socket, $query);
// запоминаем запущенный сокет
$sockets[md5(time())] = $socket;
}
}
// читаем данные из сокета. формально они нам
// не нужны, но это позволяет
// отработать обработчкику запросов
reset($sockets);
while ($socket = current($sockets))
{
if (feof($socket))
{
// убиваем сокет, который отработал
unset($sockets[key($sockets)]);
}
else
{
// читаем данные из сокета
$temp = fgets($socket, 1000);
}
// обрабатываем следующий сокет
next($sockets);
}
// делаем небольщую задержку,
// иначе загруженность сервера
// приближается к 100 процентам
sleep(1);
// если нет активных сокетов, то можно выходить
if (count($sockets) == 0)
$done = true;
}
fclose($keywords);
die;
может кому то пригодится ...
На каком – то сайте видел вот такой пример «многопоточности». Тут естественно идёт симуляция, т.к. в php многопоточности нет. Пример никогда не использовал, т.к. так и не встретился с задачей в которой это хоть чем то помогло.
может кому то пригодится ...
=) Это нам только что показывали, здесь "многопоточность" реализована безобразно, но смысл понятен, если сделать тоже самое с функциями socket_ и использованием селеста, то можно сделать замечательно работающие программы с распараллеленной работой с серверами (например для брута, скана и т.д. Так же таким образом делается кроссплатформенные серверы на PHP)
правильно в пхп нет многопоточности так как пхп это интерпретаторны а не компиляторный язык программинга
в пхп разные части кода одновременно выполнять нльзя и циклы это не многопоточность если тока в одном цикле не указатть к примеру десять коннектов одновременно но всё же не закончив один коннект к другому не перейдёт он он же построчно читает и выполняет
а компиляторные другое дело
nerezus, zaco
тем не менее этот пример довольно рапространен.
с таким же успехом можно и system('php '.__file__) мутить) с передачей левого параметра. вообще согласен с Pochka - елси необходимо реализовывать многопоточность для работы с сокетами то лучше просто юзать их в неблокирующем режиме... только вот функции для этого не вкулючены по-умолчанию - используем php_sockets.
2Sw%00p а перл с питоном это бабушкины сказки?) что мешает выполнять многопоточность в скриптовом языке программирования? разве интерпретатор не может этого уследить?
Бэмц. Не в состоянии сейчас ситать весь топик, скажу из своего опыта - pcntl - спец. модуль пхп для многопоточности. Чтобы была поддержка, нужно компиллить с опцией --with-pcntl. Также можно делать exec('php thread.php параметры_или_файл_с_сериал айзнутым_массивом_параметр ов &') system('аналогично') и прочее. Для каждого случая нужен свой способ: если вы пишете для себя, можно юзеть pcntl, если какой-нибудь скрипт, предназначенный для массового распространения, лучше юзать системные вызовы, т.к. pcntl установлен далеко не везде, а рут есть не у всех сами понимаете :). Некоторые еще извращаются с ифреймами... Но по мне так если скрипт многопоточный, значит он серьезный, и тут мне больше нравится консольная реализация. Можно лишь написать админку с использованием хтмл, которая, в свою очередь, будет запускать главный скрипт или сразу потоки... ВОт такой вот бред сбодуна получился :)
с таким же успехом можно и system('php '.__file__) мутить) с передачей левого параметра. вообще согласен с Pochka - елси необходимо реализовывать многопоточность для работы с сокетами то лучше просто юзать их в неблокирующем режиме... только вот функции для этого не вкулючены по-умолчанию - используем php_sockets.
2Sw%00p а перл с питоном это бабушкины сказки?) что мешает выполнять многопоточность в скриптовом языке программирования? разве интерпретатор не может этого уследить?
бля речь шла о пхп а не о перле как ты можешь в скрипте одновременно выполнить две процедуры да ни как интерпретатор читает построчно и выполняет поочереди
а вот например в Делфи можно открыть букет сокетов вот те и многопоточность а в пхп невозможно тока из за того что он интерпретаторный
опять таки цикл это не многопоточность
если так говоришь про многопоточность то напарь
любой скриптик где одновременно 10 коннектов было
>>опять таки цикл это не многопоточность
тогда понятия потока не существует вообще. для создания потока идет "цикл" на низком уровне (иначе-то как?). а окошечки как рисуются в винде? на низком уровне идет один большой цикл. у скриптового языка один большой цикл выполняет интерпретатор. то что в пхп нет такой возможности не говорит о том что в скриптовом языке программирования это не реализуемо.
правильно в пхп нет многопоточности так как пхп это интерпретаторны а не компиляторный язык программинга Бред. Учи матчасть. В питоне есть. И даже в перле есть.
А в пхп нету, так как в нем не нужна - он для веб-приложений, а не для всякиъх брутов и т.д.
тем не менее этот пример довольно рапространен. Кто его юзает — ССЗБ.
pcntl - спец. модуль пхп для многопоточности. Это не многопоточность, а системные вызовы никсы. Да и среди них из более-менее пригодных для многопоточности только fork. Но форк и threads(собственно многопоточность) разные вещи. Не путай красное с квадратным.
как ты можешь в скрипте одновременно выполнить две процедуры да ни как Во-первых, срочно читай это: http://www.parabox.ru/files/russian-spelling-punctuation-20050802.chm
Во-вторых, паралельно две процедуры спокойно могут выполняться. Одноядерные процы остались в прошлом.
а вот например в Делфи можно открыть букет сокетов вот те и многопоточность а в пхп невозможно тока из за того что он интерпретаторный Почему нельзя? Слушай, для одной темы ты уже достаточно нагнал, ты случайно не политик?
интерпретатор читает построчно и выполняет поочереди Бред, скрипт на пхп/питоне/перл сначала компилируется в байткод, а потом этот байткод исполняется на вирт. машине.
В заключение: стоит выбирать средства, наиболее подходящие для реализации поставленной цели.
В PHP нету многопоточности.
Дискуссия Продвинутых Спецов как всегда свелась к русскому языку. Кто-то под многопоточностью понимает распараллеленность выполнения действий, а кто-то определение из теории многозадачности
2KSURi: это 1 или 2 линк который я нашёл в Google номральным назвать трудно, но всё равно спасибо!
2nerezus: Разложил всё по полочкам
2All: Спасибо за внимание и вермя
VampiRUS
02.10.2006, 05:55
наконец-то вспомнил как расшифровывается php и пошел учить perl
наконец-то вспомнил как расшифровывается php и пошел учить perl PHP расшифровывается так: PHP Hypertext Preprocessor
А вот перл сасает: нет таких областей, где он был бы лучшим.
При этом имеет ряд недостатков: низкая скорость, мало модулей, убогий синтаксис, неактуальность.
[hidden]
02.10.2006, 13:55
Разве? Как я слышал, Perl считается лучшим для разборки текста..
Настораживает растущая популярность ROR (Ruby on Rails) и Python -- его даже Google использует для своего генератора сайтмапов.
Я посмотрел -- что-то сильно незнакомое, абсолютно чужой синтаксис.. А как насчет скорости?
Бред, скрипт на пхп/питоне/перл сначала компилируется в байткод, а потом этот байткод исполняется на вирт. машине.
ты видать в первом классе информатику не открывал и не знаешь отличия между компилируемыми и интерпретируемымми языками программирования
и опять токи напоминаю речь идёт о пхп
ещё пихните баш сюды поток коннектов или многопоточность это когда одновременно 10 коннектов на один адрес идёт откройте любой брутус и посмотрите таблицу коннектов
10 (к примеру) коннектов открываются и в зависимости от ответов потом закрываются
а в пхп опять таки в цикле (рассматриваем брутфорс какой нить) коннект будет идти поочереди
даже если в одну интерацию цикла пихнуть десять коннектов ну типа (fsockopen) опять таки одновременно все 10 не откроются только после окончания первого будет открываться второй
а это разве многопоточность?
почитайте лучше про букет сокетов
даже если в одну интерацию цикла пихнуть десять коннектов ну типа (fsockopen) опять таки одновременно все 10 не откроются только после окончания первого будет открываться второй
а это разве многопоточность?
почитайте лучше про букет сокетов
Если php собран с поддержкой сокетов, то всю кучу сокетов можно коннектить уже в неблокирующем режиме
Как я слышал, Perl считается лучшим для разборки текста.. Потом придумали питон...
А как насчет скорости? медленнее перла только Ruby.
а в пхп опять таки в цикле (рассматриваем брутфорс какой нить) коннект будет идти поочереди п*здишь. Ты про неблок. сокеты не слышал?
ты видать в первом классе информатику не открывал и не знаешь отличия между компилируемыми и интерпретируемымми языками программирования У меня сегодня очень плохое настроение. Поэтуму слушать твой бред и оскорбления я не намерен. Короче ты забанен.
nc.STRIEM
04.10.2006, 20:27
2Dr.Check: цикл будте выполняться послелодвательно
2fucker"ok: а 100 проще?
А вот это то что ты написал хош сказать будет не последовательно выполняться?????
ТО что ты написал тож последовательно будет!
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot