PHPの同時処理についての質問です。


複数の画像(100枚)を1枚に合成するPHPプログラムがあります。
サーバーにかなりの負担がかかっているのですが、
このプログラムに例えば同時に20人とか30人がアクセスした場合は
正常に動くのでしょうか?
実行が遅くなるだけなら問題ないのですが…。

回答の条件
  • 1人2回まで
  • 登録:2007/07/19 16:40:18
  • 終了:2007/07/20 09:56:38

回答(3件)

id:studioes No.1

studioes回答回数522ベストアンサー獲得回数612007/07/19 16:50:29

ポイント27pt

 それは、サーバ次第です。

 例えば、消費メモリが多いときに、同時アクセスでシステムのメモリを使い切ってしまえば、メモリ不足エラーで停止します。

 また、PHPのタイムアウト設定があれば、同時処理によってタイムアウトしてしまって途中終了することもあります(プログラムを複数同時に動かしたときには、単純に動作数倍では済まず、プログラムの切替オーバーヘッドや、ディスクのランダムアクセスによる応答低下で著しく低下することがあります)

 TOP等で実行情報を取得して、上記点を確認してみてはいかがでしょうか。

id:t_yasu

早速ありがとうございます。

TOPで実行情報を取得とはどのようにするのですか?

2007/07/19 17:00:29
id:Yota No.2

Yota回答回数453ベストアンサー獲得回数282007/07/19 17:08:14

ポイント27pt

max_execution_time

http://www.php.net/manual/ja/ref.info.php

memory_limit

http://www.php.net/manual/ja/ini.core.php#ini.memory-limit

などの調整をしないと完結しない可能性が大きいと思います。

あとはプロセスを一つずつ増やしながら、やってみるしかないのではないでしょうか。

id:t_yasu

ありがとうございました。

私が借りているサーバーは「php.ini」が変更できない仕様なのです…。

2007/07/19 17:20:44
id:Yota No.3

Yota回答回数453ベストアンサー獲得回数282007/07/19 17:34:43

ポイント26pt

回答者2です。

それなら、set_time_limit ( 0 ) ;としてみるとか。

http://www.php.net/manual/ja/function.set-time-limit.php

それと

実行が遅くなるだけなら問題ないのです

とのことですが、仮に1時間もかかったらユーザはその間パソコンの電源を落とすこともできず、もういいやとなるのではないでしょうか。

かかる時間によっては、別途メールで送るとか、翌日アクセスしてもらうなどの方法も考えたほうがいいと思います。

id:t_yasu

私が何度か試してみたところ、100枚合成するのに30秒くらいかかっていて、特にエラーは出なかったのですが、他の方に試してもらうと数分待ってエラーが出たとこ報告もありまして…。教えていただいた方法も試してみます。ありがとうございました。

2007/07/19 17:43:37
  • id:b-wind
    > 他の方に試してもらうと数分待ってエラーが出たとこ報告もありまして…。
    たぶん Apache かブラウザのレベルでタイムアウトになっていると思う。
    何も出力しない状態で一定時間たつと Apache はエラーとして処理してしまうので、ヘッダ情報だけでも先に出しておくと回避できる可能性がある。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません