PHPで質問です。

mcryptで暗号化したものを復号化して、その一覧を出そうとしているのですが
何故か、無限ループのように、サーバーが止まってしまいます。
原因は何でしょうか?

ちなみに、単一で復号化した場合、ローカル環境で行った場合は問題ないのですが
Linuxサーバーで複数回連続して行った場合のみでます。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/01/06 13:44:45
  • 終了:2014/01/09 18:31:19

回答(1件)

id:tukihatu No.1

牛乳先生(tukihatu)回答回数180ベストアンサー獲得回数322014/01/06 18:49:10

ポイント200pt

ズバリ正解なところはわからないですが、単一で動くのに複数回で動かない場合は命令の問題ではなく件数の問題ではないでしょうか?(メモリ系)
あまりにも膨大な件数を扱うとサーバタイムアウトしてしまい処理が止まってしまいます。
(ループ関数のオーバーヘッド)
オーバーヘッドの場合は止まる前までの処理は行いますが、止まると強制的にexitした形になるのでその後のecho関数が実行されなくて何も表示されないことが良くあります。
またPHPエラーではないのでエラー文を表示しません。よってログに残りません。


どのくらいのデータを扱っているんでしょうか。配列が100とか200で止まるのであればこの問題ではないと思いますが、1000件越えならサーバのスペックによってはあるかもしれません。
解決方法はこのような考え方があります
http://ja.wikipedia.org/wiki/%E3%83%AB%E3%83%BC%E3%83%97%E5%B1%95%E9%96%8B#.E9.9D.99.E7.9A.84.2F.E6.89.8B.E5.8B.95.E3.83.AB.E3.83.BC.E3.83.97.E5.B1.95.E9.96.8B
また、以前自分が質問したものがあるのでこちらももしかしたら参考になるかもしれません。
http://q.hatena.ne.jp/1208832776

追記
すみません書き忘れ。
あと、読み込みがずーっと終わらず砂時計の状態でも、件数が多い場合は処理が続いているのかもしれません。ただ単に重いだけという可能性。
まとめて複合化したデータを表示しようとすると全ての処理が終わるまで何も表示されません。一件一件処理が終わったら表示するようにしたら動いているのが確認できるかもしれません

id:makocan

件数は、3件前後だったので、その問題では無いかもしれません。
ただ、Crypt_Blowfishに変更したら、対応出来ました。
謎ですが、どこか、自分のソースがおかしかったのかもしれません。

2014/01/09 18:30:26
id:tukihatu

mcryptのインストールが不完全だったりバージョンが古かったり?
ちょっと謎ですね。

2014/01/10 10:13:20

コメントはまだありません

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

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

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

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