単純なhtml domを使用してページごとにすべての画像を保存し、画像クラスを取得するための単純なパーサーを作成しましたが、ページごとに渡すためにループ内にループを作成する必要があり、コードで何かがそのまま最適化されていないと思います非常に遅く、常にタイムアウトまたはメモリ超過が発生します。誰かがコードをざっと見ただけで、私が作った本当にばかげたものを見ることができますか?
ライブラリが含まれていないコードは次のとおりです...
$pageNumbers = array(); //Array to hold number of pages to parse
$url = 'http://sitename/category/'; //target url
$html = file_get_html($url);
//Simply detecting the paginator class and pushing into an array to find out how many pages to parse placing it into an array
foreach($html->find('td.nav .str') as $pn){
array_push($pageNumbers, $pn->innertext);
}
// initializing the get image class
$image = new GetImage;
$image->save_to = $pfolder.'/'; // save to folder, value from post request.
//Start reading pages array and parsing all images per page.
foreach($pageNumbers as $ppp){
$target_url = 'http://sitename.com/category/'.$ppp; //Here i construct a page from an array to parse.
$target_html = file_get_html($target_url); //Reading the page html to find all images inside next.
//Final loop to find and save each image per page.
foreach($target_html->find('img.clipart') as $element) {
$image->source = url_to_absolute($target_url, $element->src);
$get = $image->download('curl'); // using GD
echo 'saved'.url_to_absolute($target_url, $element->src).'<br />';
}
}
ありがとうございました。