mcryptで暗号化したものを復号化して、その一覧を出そうとしているのですが
何故か、無限ループのように、サーバーが止まってしまいます。
原因は何でしょうか?
ちなみに、単一で復号化した場合、ローカル環境で行った場合は問題ないのですが
Linuxサーバーで複数回連続して行った場合のみでます。
ズバリ正解なところはわからないですが、単一で動くのに複数回で動かない場合は命令の問題ではなく件数の問題ではないでしょうか?(メモリ系)
あまりにも膨大な件数を扱うとサーバタイムアウトしてしまい処理が止まってしまいます。
(ループ関数のオーバーヘッド)
オーバーヘッドの場合は止まる前までの処理は行いますが、止まると強制的に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
追記
すみません書き忘れ。
あと、読み込みがずーっと終わらず砂時計の状態でも、件数が多い場合は処理が続いているのかもしれません。ただ単に重いだけという可能性。
まとめて複合化したデータを表示しようとすると全ての処理が終わるまで何も表示されません。一件一件処理が終わったら表示するようにしたら動いているのが確認できるかもしれません
件数は、3件前後だったので、その問題では無いかもしれません。
2014/01/09 18:30:26ただ、Crypt_Blowfishに変更したら、対応出来ました。
謎ですが、どこか、自分のソースがおかしかったのかもしれません。
mcryptのインストールが不完全だったりバージョンが古かったり?
2014/01/10 10:13:20ちょっと謎ですね。