Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Многопоточность в Php (https://forum.antichat.xyz/showthread.php?t=24682)

St__one 30.09.2006 14:38

Многопоточность в 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 таким образом разбив задачу на потоки
}
?>

Сделал небольшой набросочек
ИМХО должно работать???!!!

nerezus 30.09.2006 15:37

Костыль на костыле костылем погоняет.

Зачем нужна многопоточность на пхп? Всякие бруты и т.д.? Тогда зачем ПХП? Питон в лапы(или перл для извращенцев) и вперед на мины. Ибо уже куча модулей.

А тем, кто не хочет учить питон, предлагаю курить доки про форки.

ZaCo 30.09.2006 15:42

2St__one вы норкоман?

St__one 30.09.2006 18:53

2nerezus: Я же написал на многопоточность на php... Конечно согласен, что реализация путем клонирования кода не самая лучшая...

Для чего надо??? Например: написать сокс чекер на php в потоков 50-100

2ZaCo: Нет не наркоман

ZaCo 30.09.2006 19:36

2St__one 1) у тебя в коде вложенные конструкции начала пхп-кода 2) я не пойму ка кты решил этим делать многопоточность... с таким же успехом можно позапускать несколько копий пхп. а тут у тебя код последовательно выполняется. или я дурак. какой n?? я не понимаю

nerezus 30.09.2006 19:40

Цитата:

Для чего надо??? Например: написать сокс чекер на php в потоков 50-100
форком

Ch3ck 30.09.2006 19:44

Хм, чё-то так много написал... а разве нельзя было в цикл поставить. тоже самое было бы.

fucker"ok 30.09.2006 19:52

А мне проще 5 раз скрипт запустить. Вот вам и многопаточность :d

St__one 30.09.2006 20:50

2ZaCo: не закрыл, торопился это лишь набросок, чтобы понять мысль
n это номер скрипта(0, 1, 2 .... так далее) )))

2Dr.Check: цикл будте выполняться послелодвательно

2fucker"ok: а 100 проще?

KSURi 30.09.2006 21:01

http://www.stableversion.com/2006/04/17/multithread-php/
вот тебе нормальная "многопоточность", хватит извращаться

ZaCo 30.09.2006 21:40

2KSURi это еще хуже :)
2St__one полный бред понимаешь?

Pochka 30.09.2006 22:01

Цитата:

Сообщение от ZaCo
2KSURi это еще хуже :)

Кто тебе поведал? Конечно неблокирующим вводом\выводом в т.ч. в/из сокетов многопоточность в полном смысле слова заменить нельзя, но для подавляющего большинства всех задач, которые захотят решать местные Хакеры этого будет вполне достаточно

nerezus 30.09.2006 22:18

Цитата:

2KSURi это еще хуже
+1, такого бреда давно не видел )

off 30.09.2006 22:38

На каком – то сайте видел вот такой пример «многопоточности». Тут естественно идёт симуляция, т.к. в php многопоточности нет. Пример никогда не использовал, т.к. так и не встретился с задачей в которой это хоть чем то помогло.


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-Typetext/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$error30);
            
stream_set_blocking($socket0);
            
stream_set_timeout($socket3600);
            
fputs($socket$query);
           
            
// запоминаем запущенный сокет
           
            
$sockets[md5(time())] = $socket;
        }
    }
   
    
// читаем данные из сокета. формально они нам
    // не нужны, но это позволяет
    // отработать обработчкику запросов
   
    
reset($sockets);
    while (
$socket current($sockets))
    {
        if (
feof($socket))
        {
            
// убиваем сокет, который отработал
           
            
unset($sockets[key($sockets)]);
        }
        else
        {
            
// читаем данные из сокета
           
            
$temp fgets($socket1000);
        }
       
        
// обрабатываем следующий сокет
       
        
next($sockets);
    }
   
    
// делаем небольщую задержку,
    // иначе загруженность сервера
    // приближается к 100 процентам
   
    
sleep(1);
   
    
// если нет активных сокетов, то можно выходить
   
    
if (count($sockets) == 0)
        
$done true;
}

fclose($keywords);

die; 

может кому то пригодится ...

Pochka 30.09.2006 22:47

Цитата:

Сообщение от off
На каком – то сайте видел вот такой пример «многопоточности». Тут естественно идёт симуляция, т.к. в php многопоточности нет. Пример никогда не использовал, т.к. так и не встретился с задачей в которой это хоть чем то помогло.




может кому то пригодится ...

=) Это нам только что показывали, здесь "многопоточность" реализована безобразно, но смысл понятен, если сделать тоже самое с функциями socket_ и использованием селеста, то можно сделать замечательно работающие программы с распараллеленной работой с серверами (например для брута, скана и т.д. Так же таким образом делается кроссплатформенные серверы на PHP)

Sw%00p 30.09.2006 22:49

правильно в пхп нет многопоточности так как пхп это интерпретаторны а не компиляторный язык программинга
в пхп разные части кода одновременно выполнять нльзя и циклы это не многопоточность если тока в одном цикле не указатть к примеру десять коннектов одновременно но всё же не закончив один коннект к другому не перейдёт он он же построчно читает и выполняет
а компиляторные другое дело

KSURi 30.09.2006 23:03

nerezus, zaco
тем не менее этот пример довольно рапространен.

ZaCo 30.09.2006 23:19

с таким же успехом можно и system('php '.__file__) мутить) с передачей левого параметра. вообще согласен с Pochka - елси необходимо реализовывать многопоточность для работы с сокетами то лучше просто юзать их в неблокирующем режиме... только вот функции для этого не вкулючены по-умолчанию - используем php_sockets.
2Sw%00p а перл с питоном это бабушкины сказки?) что мешает выполнять многопоточность в скриптовом языке программирования? разве интерпретатор не может этого уследить?

SMiX 30.09.2006 23:27

Бэмц. Не в состоянии сейчас ситать весь топик, скажу из своего опыта - pcntl - спец. модуль пхп для многопоточности. Чтобы была поддержка, нужно компиллить с опцией --with-pcntl. Также можно делать exec('php thread.php параметры_или_файл_с_сериал айзнутым_массивом_параметр ов &') system('аналогично') и прочее. Для каждого случая нужен свой способ: если вы пишете для себя, можно юзеть pcntl, если какой-нибудь скрипт, предназначенный для массового распространения, лучше юзать системные вызовы, т.к. pcntl установлен далеко не везде, а рут есть не у всех сами понимаете :). Некоторые еще извращаются с ифреймами... Но по мне так если скрипт многопоточный, значит он серьезный, и тут мне больше нравится консольная реализация. Можно лишь написать админку с использованием хтмл, которая, в свою очередь, будет запускать главный скрипт или сразу потоки... ВОт такой вот бред сбодуна получился :)

Sw%00p 01.10.2006 01:14

Цитата:

Сообщение от ZaCo
с таким же успехом можно и system('php '.__file__) мутить) с передачей левого параметра. вообще согласен с Pochka - елси необходимо реализовывать многопоточность для работы с сокетами то лучше просто юзать их в неблокирующем режиме... только вот функции для этого не вкулючены по-умолчанию - используем php_sockets.
2Sw%00p а перл с питоном это бабушкины сказки?) что мешает выполнять многопоточность в скриптовом языке программирования? разве интерпретатор не может этого уследить?

бля речь шла о пхп а не о перле как ты можешь в скрипте одновременно выполнить две процедуры да ни как интерпретатор читает построчно и выполняет поочереди
а вот например в Делфи можно открыть букет сокетов вот те и многопоточность а в пхп невозможно тока из за того что он интерпретаторный
опять таки цикл это не многопоточность
если так говоришь про многопоточность то напарь
любой скриптик где одновременно 10 коннектов было

ZaCo 01.10.2006 01:27

>>опять таки цикл это не многопоточность
тогда понятия потока не существует вообще. для создания потока идет "цикл" на низком уровне (иначе-то как?). а окошечки как рисуются в винде? на низком уровне идет один большой цикл. у скриптового языка один большой цикл выполняет интерпретатор. то что в пхп нет такой возможности не говорит о том что в скриптовом языке программирования это не реализуемо.

nerezus 01.10.2006 08:48

Цитата:

правильно в пхп нет многопоточности так как пхп это интерпретаторны а не компиляторный язык программинга
Бред. Учи матчасть. В питоне есть. И даже в перле есть.
А в пхп нету, так как в нем не нужна - он для веб-приложений, а не для всякиъх брутов и т.д.

Цитата:

тем не менее этот пример довольно рапространен.
Кто его юзает — ССЗБ.

Цитата:

pcntl - спец. модуль пхп для многопоточности.
Это не многопоточность, а системные вызовы никсы. Да и среди них из более-менее пригодных для многопоточности только fork. Но форк и threads(собственно многопоточность) разные вещи. Не путай красное с квадратным.


Цитата:

как ты можешь в скрипте одновременно выполнить две процедуры да ни как
Во-первых, срочно читай это: http://www.parabox.ru/files/russian-spelling-punctuation-20050802.chm
Во-вторых, паралельно две процедуры спокойно могут выполняться. Одноядерные процы остались в прошлом.

Цитата:

а вот например в Делфи можно открыть букет сокетов вот те и многопоточность а в пхп невозможно тока из за того что он интерпретаторный
Почему нельзя? Слушай, для одной темы ты уже достаточно нагнал, ты случайно не политик?

Цитата:

интерпретатор читает построчно и выполняет поочереди
Бред, скрипт на пхп/питоне/перл сначала компилируется в байткод, а потом этот байткод исполняется на вирт. машине.

В заключение: стоит выбирать средства, наиболее подходящие для реализации поставленной цели.
В PHP нету многопоточности.

Pochka 01.10.2006 13:08

Дискуссия Продвинутых Спецов как всегда свелась к русскому языку. Кто-то под многопоточностью понимает распараллеленность выполнения действий, а кто-то определение из теории многозадачности

St__one 01.10.2006 13:52

2KSURi: это 1 или 2 линк который я нашёл в Google номральным назвать трудно, но всё равно спасибо!

2nerezus: Разложил всё по полочкам

2All: Спасибо за внимание и вермя

VampiRUS 02.10.2006 05:55

наконец-то вспомнил как расшифровывается php и пошел учить perl

nerezus 02.10.2006 10:59

Цитата:

наконец-то вспомнил как расшифровывается php и пошел учить perl
PHP расшифровывается так: PHP Hypertext Preprocessor

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

[hidden] 02.10.2006 13:55

Разве? Как я слышал, Perl считается лучшим для разборки текста..
Настораживает растущая популярность ROR (Ruby on Rails) и Python -- его даже Google использует для своего генератора сайтмапов.
Я посмотрел -- что-то сильно незнакомое, абсолютно чужой синтаксис.. А как насчет скорости?

Sw%00p 02.10.2006 15:29

Цитата:

Сообщение от nerezus
Бред, скрипт на пхп/питоне/перл сначала компилируется в байткод, а потом этот байткод исполняется на вирт. машине.

ты видать в первом классе информатику не открывал и не знаешь отличия между компилируемыми и интерпретируемымми языками программирования

и опять токи напоминаю речь идёт о пхп
ещё пихните баш сюды поток коннектов или многопоточность это когда одновременно 10 коннектов на один адрес идёт откройте любой брутус и посмотрите таблицу коннектов
10 (к примеру) коннектов открываются и в зависимости от ответов потом закрываются
а в пхп опять таки в цикле (рассматриваем брутфорс какой нить) коннект будет идти поочереди

даже если в одну интерацию цикла пихнуть десять коннектов ну типа (fsockopen) опять таки одновременно все 10 не откроются только после окончания первого будет открываться второй
а это разве многопоточность?
почитайте лучше про букет сокетов

Pochka 02.10.2006 17:06

Цитата:

Сообщение от Sw%00p
даже если в одну интерацию цикла пихнуть десять коннектов ну типа (fsockopen) опять таки одновременно все 10 не откроются только после окончания первого будет открываться второй
а это разве многопоточность?
почитайте лучше про букет сокетов

Если php собран с поддержкой сокетов, то всю кучу сокетов можно коннектить уже в неблокирующем режиме

nerezus 02.10.2006 17:56

Цитата:

Как я слышал, Perl считается лучшим для разборки текста..
Потом придумали питон...

Цитата:

А как насчет скорости?
медленнее перла только Ruby.



Цитата:

а в пхп опять таки в цикле (рассматриваем брутфорс какой нить) коннект будет идти поочереди
п*здишь. Ты про неблок. сокеты не слышал?

Цитата:

ты видать в первом классе информатику не открывал и не знаешь отличия между компилируемыми и интерпретируемымми языками программирования
У меня сегодня очень плохое настроение. Поэтуму слушать твой бред и оскорбления я не намерен. Короче ты забанен.

nc.STRIEM 04.10.2006 20:27

Цитата:

Сообщение от St__one

2Dr.Check: цикл будте выполняться послелодвательно

2fucker"ok: а 100 проще?

А вот это то что ты написал хош сказать будет не последовательно выполняться?????
ТО что ты написал тож последовательно будет!


Время: 07:25