останавливается цикл for

12
W
На сайте с 09.04.2013
Offline
46
#11

Как вариант , можно обойтись без регекпов.


<?php
class MultiCurlParser{
private $mh;
private $handles = array();
private $running = null;

public function __construct(&$links)
{
$this->mh=curl_multi_init();
foreach ($links as $link) {
try {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($this->mh, $curl);
$this->handles[] = $curl;
} catch (Exception $e) {
echo $e->getMessage();
}
}
}

public function run($callback)
{
do {
curl_multi_exec($this->mh, $this->running);
} while ($this->running > 0);

foreach ($this->handles as $handle) {
if (is_callable($callback)) $callback(curl_multi_getcontent($handle));
curl_multi_remove_handle($this->mh,$handle);
}
curl_multi_close($this->mh);
}

}
$links=Array (
"https://pl.aliexpress.com/store/product/Original-Xiaomi-Redmi-3-Metal-Body-Mobile-Phone-16GB-ROM-Snapdragon-616-Octa-Core-5-0/311331_32593665671.html",
"https://pl.aliexpress.com/store/product/Original-Meizu-M3-Mini-4G-LTE-Cell-Phone-Android-5-1-MT6750-Octa-Core-5-0/311331_32659346800.html",
"https://pl.aliexpress.com/store/product/Original-Xiaomi-Mipad-MI-Pad-2-Intel-Atom-X5-Full-Metal-Body-Tablet-PC-7-9/103919_32550276647.html",
"https://pl.aliexpress.com/store/product/Original-Meizu-U20-Meilan-Mobile-Phone-3GB-RAM-32GB-ROM-5-5-FHD-1080P-MTK-Helio/311331_32724593890.html",
"https://pl.aliexpress.com/store/product/Original-Xiaomi-Redmi-3S-Mobile-Phone-4100mAh-Battery-Fingerprint-ID-Snapdragon-430-Octa-Core-2GB-RAM/805191_32683030676.html"
);
libxml_use_internal_errors(true);
$curl=new MultiCurlParser($links);
$curl->run(function ($content){
$dom = new DomDocument();
$dom->loadHTML($content);
$xpath = new DomXPath( $dom );
$shopName = trim($xpath->query(".//a[@class='shop-name']")->item(0)->nodeValue);
$price = trim($xpath->query(".//span[@class='p-price']")->item(0)->nodeValue);
echo $shopName.' '.$price.PHP_EOL;
});

manaz
На сайте с 13.12.2013
Offline
61
#12

Благодарю за помощь господа...

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий