Что такое многопоточный скрипт?

Altex

Новичок
Автор оригинала: Demiurg
Altex
а что там про многопоточность сказано ?
Протелепатировал и решил, что автору может пригодиться и многопрозадачность вместо многопоточности. С определенной степенью абстракции можно будет и такой скрипт (как в примерах по ссылке) назвать "многопоточным".

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

The Ghost

Новичок
Начнём с того что PCNTL есть далеко не везде, и запускать сразу несколько скриптов тоже не выход!

Надо из одного скрипта открывать сразу по 20-40 соединений с разными серваками (всего около 10000 серваков), поэтому делать это последовательно не раельно!

Так может кто нибудь мне подскажет выход??? :confused:

Всё к чему я пришёл это на одной страничке открывается 3 фрейма и в каждом из них по очереди открывается соединение, однако с уычётом того что на проверку каждого соединения уходит 3-5 секунд это тоже не выход, так как если даже открывать 20 фреймов, то это выходит 10000/20 = 500*5 = 2500 секунд, а так долго ни один хостер не даёт выполнять скрипт, ктому же даже если перезапускать скрипты, то это тоже очень долго!

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

Вообще такое в принцепе вожможно???:(
 

Demiurg

Guest
The Ghost
ты опиши задачу в целом.
php это вобще то язык для веба.
 

Nimous

Guest
The Ghost
запускать сразу несколько скриптов тоже не выход
и
Всё к чему я пришёл это на одной страничке открывается 3 фрейма и в каждом из них по очереди открывается соединение
--несколько противоречиво.

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

Вообще такое в принцепе вожможно
В ПХП СРАЗУ выполняется только одна операция, ибо это скрипт.

Если тебя интересует решение конкретной задачи (download, например) - то тебе всё уже рассказали.

Что ты хочешь?
 

Steamroller

Новичок
Надо из одного скрипта открывать сразу по 20-40 соединений с разными серваками (всего около 10000 серваков), поэтому делать это последовательно не раельно!

Так может кто нибудь мне подскажет выход???
Выход есть - [m]socket_select[/m], правда почитать и осознать - много чего придется.
 

The Ghost

Новичок
Для Nimous: Противоречия тут нет! Я пишу, что Всё к чему я пришёл это на одной страничке открывается 3 фрейма и в каждом из них по очереди открывается соединение, однако данное решение меня не устраивает и поэтому я и пишу что для меня это не выход!

А задача у меня стоит написать на ПХП порт-сканер.
 

Demiurg

Guest
>А задача у меня стоит написать на ПХП порт-сканер.
php для этого не предназначен.
 

The Ghost

Новичок
Автор оригинала: Demiurg
>А задача у меня стоит написать на ПХП порт-сканер.
php для этого не предназначен.
Если он для этого не предназначен, то это ещё не значит что на PHP этого не напишешь!

P.S. не бывает ничего невозможного!
 

DenVic

Новичок
php для этого не предназначен.
где-то я в просторах инета встречал, такой скрипт и причем на ПХП, ссылки не даю не помню(если попадетси то кину), но поищи, если есть, а но есть, то обязательно найдеься
 

HollySpirut

Guest
не моё
PHP:
<?php
#############################################
# Создание скрипта: Kyoshiro                #
# Имя скрипта: k.Port Scanner               #
# Версия скрипта: 0.1                       #
# Статус: Бесплатный скрипт                 #
# Требования: PHP4 и выше...                #
# Дата создания скрипта: 22 октября 2002 г. #
# Страница:  [url]http://php9.port5.com/[/url]         #
#            [url]http://dreams.host.sk/[/url]         #
# Почта:     [email][email protected][/email]           #
#############################################
#              Удачной работы!              #
#          ... Я буду помнить.              #
#############################################
error_reporting(0);
?>
<html>
<head>
<title>k.Port Scanner v1.0</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<STYLE type=text/css>
<!--
body, td, input, textarea, select { color: black; font: 8pt verdana; font-weight: none; text-decoration: none }
}
-->
</STYLE>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0095ff" vlink="#0095ff" alink="#0095ff"  style="font-size: 8pt; font-family: Verdana">
<?php
function display_form() {
?>
<center>
  <table width="596" border="0" cellspacing="1" cellpadding="2" bgcolor="#DCDCDC">
  <tr>
  <td align=left bgcolor="f5f5f5" colspan="2" width="586"></center>
  <center>
  k.Port Scanner v1.0 :: powered by <a href="http://php9.port5.com/" target="_blank">Kyoshiro</a><br></center>
  </td>
  </tr>
  <tr>
  <td bgcolor="white" colspan="2" width="586"><font face="Verdana" size="1"><br><center>
  <?php
// Внимание!!! Если Вы хотите получать результаты в новом HTML окне, измените строку,
// стоящую ниже... <form action="kps.php" method="post" target="_blank">
?>
  <form action="kps.php" method="post">
  *Хост или IP: <input type="text" style="background-color : #f5f5f5;
         border-style: solid;border-width: 1;" name="host">
        *От: <input type="text" style="background-color : #f5f5f5;
         border-style: solid;border-width: 1;" name="ot">
        *До: <input type="text" style="background-color : #f5f5f5;
         border-style: solid;border-width: 1;" name="do"><br><br>
        <input type="submit" style="background-color : #cccccc;
         border-style: solid;border-width: 1;" name="ok" value="Сканировать"></form></center>
  <tr><td align=left bgcolor="f5f5f5" colspan="2"><p align="right"><font color="black" face="Verdana" size="1"><a href="mailto:[email protected]">Письмо автору.</a>&nbsp;</font></p></td></tr>
   </td>
 </tr>
 </table>
<?php
}
?>
<?php
function process_form() {
global $host, $ot, $do;
if ($host == "" or $ot == "" or $do ==""){echo "Заполните все поля!";exit;}
if(!eregi("^[0-9]+$", $ot) or !eregi("^[0-9]+$", $do)) {
echo "Ошибка :( Значения портов должны содержать только цифры!";exit;}
for($q=$ot;$q<=$do;$q++) {
if(fsockopen ($host, $q, $errno, $errstr, 5)) {
if(!$host){echo "Ошибка : $errno - $errstr<br>";exit;}
if($q=="21"){$z="Сервис | FTP.";}
if($q=="22"){$z="Сервис | RAW или SSH.";}
if($q=="23"){$z="Сервис | Telnet.";}
if($q=="80" or $q=="8080"){$z="Сервис | HTTP.";}
if($q !="21" and $q != "22" and $q != "23" and $q != "80" and $q !="8080"){$z="Сервис | ...";}
$stat .= "<center>Порт: $q открыт. | $z</center><br>";}}
echo "<center><table width=\"596\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\" bgcolor=\"#DCDCDC\"><tr><td align=left bgcolor=\"f5f5f5\" colspan=\"2\" width=\"586\"></center><center>  k.Port Scanner v1.0 :: powered by <a href=\"http://php9.port5.com/\" target=\"_blank\">Kyoshiro</a><br></center></td></tr><tr><td bgcolor=\"white\" colspan=\"2\" width=\"586\"><font face=\"Verdana\" size=\"1\"><br>";
echo "<center>Результаты сканирования: $host с $ot до $do порта.</center><br>";
if ($stat != ""){echo "<center>$stat</center>";}
if ($stat == "") {echo "<center>Открытых портов нет.</center><br>";}
echo "<center>... Я буду помнить.</center><tr><td align=left bgcolor=\"f5f5f5\" colspan=\"2\"><p align=\"right\"><font color=\"black\" face=\"Verdana\" size=\"1\"><a href=\"mailto:[email protected]\">Письмо автору.</a>&nbsp;</font></p></td></tr></td></tr></table>";
}
?>
<?php
if (empty($ok)) { display_form(); } else
{ process_form(); }
?>
</body>
</html>
 

SkyDriver

Новичок
Автор оригинала: Steamroller
Выход есть - [m]socket_select[/m], правда почитать и осознать - много чего придется.
Сокеты самая глючная часть пхп до сих пор,
топикстартеру - тебе уже написали пример параллельного запуска скриптов через exec.
 
Сверху