2011-06-23 5 views
1

私はHostGator共有サーバーに座っているサイトで実行する必要のある、めったにないカスタムサイトマップジェネレータのcronスクリプトを持っています。発電スクリプトはPHPで記述され、次のcronコマンドで実行されます。約30秒のランタイム制限を得るためのcronスクリプトの連結

PHPのpublic_html/mysite.com /コア/ update.phpを>

のUpdate.log生成プロセスは、内部APIを呼び出して、やっ関係します距離計算は結果に基づいて行われるため、スクリプトは一般的に5〜10分で実行する必要があります。ハードコードされたPHPランタイムの制限は、HostGatorの共有サーバーでは30秒です。

スクリプトを小さなプロセスに分割する方法はありますか? PerlやPythonに変換するのに30秒の制限がかかるのであれば、誰も知っていますか?

+0

ご自身のサーバーの時間のように見えるリソースが必要な場合は、利用規約を破ってください。 –

+0

@MarathonStudios - HostGatorはmax_execution_timeの変更を許可していません。スクリプトを小さなスクリプトに分割する方法(または最適化する方法)を理解しようとしている場合は、スクリプトを投稿しても構いませんか? –

+0

@Francoisどのようなset_time_limit()について? – 0xAli

答えて

1

フォークできます。各フォークが作業を実行できることを確認し、30秒以内に新しいフォークを作成する必要があります。フォークは実行中のプロセスのコピーであるため、これまでに取得したすべてのデータが保持されます。

また、マルチカールを使用して多数のリクエストを同時に送信し、30秒以内に処理を完了できます。もちろん、仕事を適切に分ける必要があります。

+0

PHPやPythonを使用してフォークプログラムをコーディングできますか?もしそうなら、どうですか? – MarathonStudios

+1

PHPでは、pctl関数を使用します。もちろん、あなたのホストにpctl機能が有効になっていることを願っています。 http://php.net/manual/en/function.pcntl-fork.php –

2

あなたのコードは、トリックを行う必要があり、そのほとんどの時間を費やしている機能やループ内でこの

set_time_limit(30); 

を置きます。

関連する問題