0

長い質問のようです。一般的な経験に基づいた意見をいくつかお願いします。

PHP スクリプトを使用して、サーバー上でいくつかのタスクを実行します。たとえば、3 つの異なるタスクに対して 3 つの異なるスクリプトを使用した場合に違いが生じるのか、それともまったく問題にならないのか、疑問に思っていました。

私は一度に 2 ~ 3,000 人のユーザーを想定しており (夕方の時間で、かなりまれです)、それでも月に 300 ドルのサーバーを購入する余裕はありません。

4

4 に答える 4

0

php.iniファイルでphpのインストールを確認することもできます。デフォルトのタイムアウトは30秒であるため、サーバーの負荷によっては、それまでにスクリプトの実行が完了していない場合、タスクは失敗します。これを増やすことはできますが、フロントエンドからスクリプトが長時間実行されるのを30秒以上待つのに十分な患者のユーザーに影響を与える可能性があることに注意してください。

それ以外は、トラフィックのピーク時以外に1つのタスクだけで最新のサーバーに過負荷をかけることはかなり困難です。

于 2012-06-28T13:29:52.017 に答える
0

スクリプトの目的と、同時に行われるリクエストの数によって異なります。それがphp-mysqlベースになると仮定すると、主にクエリのパフォーマンスに依存すると思います. そうです、MySQL デーモンの負荷が高すぎるために Web サーバーがタイムアウトに失敗する原因となるスクリプトを知っています。選択した数のユーザーでさえ。

それがあなたに役立つことを願っています!

于 2012-06-28T13:28:12.373 に答える
0

cronjobs を使用して PHP をマルチタスクにすることは非常に一般的です。これがあなたのやりたいことだと思います。これらのスクリプトを cron ジョブとして実行するだけで、サーバーの負荷が高いことが判明した場合は、おそらくネットワークのアップグレードを検討する必要があります。$300 はサーバーにとっては高額です。AWS から適切な DB サーバーを前払いで £100、小さなインスタンスを使用して月に £7 で入手できます。これは専用サーバー ベースでは問題ありません。

同じスクリプトのマルチタスク (同じスクリプトの多くの cron が何時間にもわたって実行されている) を実行している場合、データに対する楽観的ロックのようなものが必要になることに注意してください。

もちろん、これがサーバーにとって負担が大きすぎることが判明した場合は、iron.io のようなより良い場所に処理を貸し出すことを検討してみませんか? 処理負荷を喜んで安価に軽減する多くの処理ネットワークがあります。

私が個人的に取り組んでいるもう 1 つの代替手段は、AWS スポット インスタンスです。1 時間あたり 0.005c のコストがかかるマイクロ インスタンスの自動スケーリングの束があり、自動スケーリング グループは 0 台のサーバーから動作できます。DB に負荷をかけないように、スクリプトを処理し、場合によってはそれらのスクリプトの残留データを保持するためにスポット インスタンスを調べることをお勧めします。いずれにせよ、月額300ドルよりもはるかに安いです。

しかし、あなたのタイトルに答えるために、AWS スモール インスタンス処理データなどで 2 時間ごとに 150 の cronjobs を実行しています。いいえ、まだ PHP やサーバーを倒していません。CLI モードでも PHP にはタイムアウトがありません。次のようなコマンドを使用します。

php myscript.php

処理ジョブを実行するには。

于 2012-06-28T17:49:40.263 に答える
0

個別のスクリプトを使用すると、それぞれの問題を特定するのに役立ちます。エラー メッセージと正確なファイルへのポインタがログに表示されます。

また、どれが(最も)長く実行されるかを確認するのにも役立ち、1 つのスクリプトがクラッシュしても他のスクリプトには影響しません。最適化が必要なスクリプトをより簡単に監視できます。

それらが互いに依存していないことを確認してください。

于 2012-06-28T13:24:26.760 に答える