2000ページのサイトがあり、file_get_html()
関数と正規表現を使用して、各ページを繰り返し処理してサイトマップを生成したいと思います。
明らかに、これは最大実行時間のために時間がなくなるため、1回のサーバー側実行で完了することはできません。小さなアクションを実行し、進行状況をデータベースに保存してから、次のタスクをキューに入れる必要があると思います。助言がありますか?
コマンドラインで実行すると、最大実行時間はありません。
プロバイダーが操作を許可している場合は、これにset_time_limit(0);
を使用することもできます。
IPアドレスが禁止されるかどうかはわかりません。これは、リクエストの送信先のサーバーのセキュリティによって異なるためです。
その他の解決策
1つ(またはいくつか)のページをフェッチして、ソースコード全体で新しいURLを検索できます。次に、これらをデータベースのキューに入れることができます。次に、次の実行で、キューを処理します。
set_time_limit(0)
を使用します。詳細な説明については、PHPマニュアルを参照してください。
秒
秒単位の最大実行時間。ゼロに設定すると、時間制限は課されません。
編集:2番目の質問については、そうは思われませんが、ホスティングサービスの利用規約をチェックして、許可されているかどうかを確認する必要があります。
Php.iniでmax_execution_timeを0に設定します。サーバーで実行するすべてのスクリプトに影響しますが、サーバーレベルの修正を探している場合は、これで問題が解決します。
http://php.net/manual/en/info.configuration.php#ini.max-execution-time
max_execution_time = 0
あなたにとって最良の方法は、remotapiを使用することです。たとえば、import.ioを使用して、json形式で各ページからparamを取得できます。これは、file_get_contentまたはflie_get_htmlの呼び出しごとにライトページを取得する方法です。
しかし、この問題のカールはfile_get_htmlよりも優れています