11

file_get_html()2000 ページのサイトがあり、関数と正規表現を使用して、各ページを反復処理してサイトマップを生成したいと考えています。

明らかに、これは最大実行時間のために時間切れになるため、サーバー側の 1 回の実行で完了することはできません。より小さなアクションを実行し、進行状況をデータベースに保存してから、次のタスクをキューに入れる必要があると思います。助言がありますか?

4

5 に答える 5

22

コマンドラインで実行すると、最大実行時間はありません。

set_time_limit(0);プロバイダーが操作を許可している場合は、これを使用することもできます。

あなたの IP アドレスが禁止されるかどうかはわかりません。これは、リクエストを送信するサーバーのセキュリティに依存するためです。


その他の解決策

1 つ (または数ページ) のページをフェッチし、ソース コード全体で新しい URL を検索できます。その後、これらをデータベースのキューに入れることができます。次に、次の実行時にキューを処理します。

于 2011-08-12T07:17:25.233 に答える
3

ジョブ キューとワーカーの実装の使用を検討する必要があります。Gearmanまたはzeromqをお勧めします。これらは両方とも、ネイティブの php バインディングを備えています。

于 2011-08-12T07:43:21.573 に答える
3

を使用しset_time_limit(0)ます。より詳細な説明については、 PHP マニュアルを参照してください。

最大実行時間 (秒単位)。ゼロに設定すると、時間制限は課されません。

編集: 2 番目の質問については、可能性は低いですが、ホスティング サービスの利用規約を確認して、許可されているかどうかを確認する必要があります。

于 2011-08-12T07:44:05.207 に答える