サイトマップを作成するためのリンクと画像を取得するサイトクローラを作成しましたが、実行中に殺されました!この方法(例えばhttp://www.mysite.com)
getUrl()
に設定始まるメインアドレスで :それは私のクラス全体私のサイトのクローラが実行中に死んだ
class pageCrawler {
.......
private $links = array();
public function __construct ($url) {
ignore_user_abort (true);
set_time_limit (0);
register_shutdown_function (array ($this, 'callRegisteredShutdown'));
$this->host = $urlParts [ 'host' ];
$this->crawlingUrl ($url);
$this->doCrawlLinks();
}
$this->crawlingUrl ($url)
ないのURLの内容
findLinks()
を取得し、その後すぐにわかることでURLに接続:a href
を返しますimg src
を入力し、返信リンクを$this->links[]
に保存すると、出力がフラッシュされ、その後に次のコードが挿入されます。
$this->doCrawlLinks()
: それは、その後、その後の最初の要素をシフト再びdoCrawlLinks()
実行を最初の要素 をシフトし、最初の要素のURLコンテンツを取得$this->links
をチェックして、私は$this->links
の最初の要素のためのトップに記述し、同じプロセスを行います$this->links
まで$this->links
は、それが仕事だ私のクラスの一般的な傾向だが、突然、それはCRだ空
を取得します突然灰になる。私はset_time_limit(0)
を永遠に行うように設定しましたが、私のshoutdoown関数dosentが実行されるため、私のプロセスは終了しませんでした!私は自分の問題がどこにあるのか混乱した
エラー報告を有効にしていますか? error_reporting(E_ALL);スクリプトの残りの部分でエラーが発生したためにタイムアウトした場合はどうしますか? – Duniyadnd
エラー表示なし –
"connect to url by fsockopen" - OMG!なぜ????? – symcbean