Вы не зашли.
TLENS   Off  (14)
Moderator
2014.03.01 04:04
В общем разобрался я с react. Довольно таки не плохая библиотека. Жаль что я раньше не узнал что php может работать с неблокирующими сокетами. Да и вообще удивительно что он может работать с ними на низком уровне.
Замутил такую функцию.
Код:
span style="color: #0000BB"><?phprequire '../vendor/autoload.php';function getLinks($links) { $results_data = array(); $async_func = array(); $loop = React\EventLoop\Factory::create(); $dnsResolverFactory = new React\Dns\Resolver\Factory(); $dnsResolver = $dnsResolverFactory->createCached('127.0.0.1', $loop); $factory = new React\HttpClient\Factory(); $client = $factory->create($loop, $dnsResolver); foreach ($links as $k=>$link) { $request = $client->request('GET', $link['url']); $request->on('response', function ($response) use (&$results_data, $k, &$links) { $data = ''; $response->on('data', function ($d) use (&$data) { $data .= $d; }); $response->on('end', function () use (&$data, &$results_data, $k, &$links) { $results_data[$k] = ( isset($links[$k]['callback']) && function_exists($links[$k]['callback']) ) ? $links[$k]['callback']($data) : $data; }); }); $request->end(); } $loop->run(); return $results_data; }function parsingYoutube($data, $error = null) { return 'this youtube parser. Length data ' . strlen($data);}function parsingGoogle($data, $error = null) { return 'this google parser. Length data ' . strlen($data);}$links = array();$links[] = array('url'=> 'http://www.youtube.com', 'callback'=> @parsingYoutube);$links[] = array('url'=> 'http://www.google.com.ua', 'callback'=> @parsingGoogle);//$links[] = array('url'=> 'http://wapinet.ru/forum/');$t = microtime(true);var_dump(getLinks($links));echo microtime(true) - $t;
Результаты довольно таки не плохие
array(2) {
  [1]=>
  string(37) "this google parser. Length data 11524"
  [0]=>
  string(39) "this youtube parser. Length data 219009"
}
0.35132312774658

Завтра уже усовершенствую ее. А сейчас спать охота
Главная
WEB
PunBB Mod v0.6.2
0.011 s