匿名質問者

PHPを使っておりますが出力が行われる場合と、処理が途中で止まる?為か出力が途中で止まってしまう場合があります。


最初はメモリー不足を疑ったのですが、「Allowed memory size of ・・・」のようなエラーはでておらず、エラー表示を非表示にしているわけでもありません。
(意図的にエラーを発生させるとその他のエラーや警告は表示されているので)

取り急ぎ論理的なエラーの可能性も考慮しいろいろと調査したところ、echo処理でデバッグプリント的なものを入れると最後まで処理が行われ、それらを消すと処理が止まってしまう状況にあることがわかりました。

その他メモリー不足の線も確実にないとは言えないので念のため512M程度まで増やしましたが状況は変わりません。

なお、PHPは5.2となります。

このような現象はなぜ起きてしまうのでしょうか。またどのように対処すればよいのでしょうか。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/03/21 18:15:03

回答1件)

匿名回答1号 No.1

ソースコードをみないと何とも言えませんが….

プログラムのエラーがないとして...

1.外部との通信タイミングの違い。

2.プログラム途中で、変数がクリアされていたり、条件分岐で失敗している

とかでしょうか。

匿名質問者

ご回答ありがとうございます。

ちょっとソースのサイズは大きすぎる(業務関連のもの)ので掲載できないのですが。
外部との通信等は行わないプログラムです。
単純に予め内部で設定した変数(配列)に対して特定の処理を行い、その結果を返すもの。

また、不思議な事としては、その与える変数を変更しない状態で実行するとプログラムが完走しないのですが、途中、適当にいくつか「echo」を挟みなんでもいいので出力させると完走する部分です。

最初はechoを挟んだ部分にゴミが混ざっているような事があるのかもと思い。前後の改行や空白を置き換えたりしたのですが、結果的には「echo」を挟み部分に意味などなく、どこでもよいので適当に設定すると完走するという状態です。

その後、メモリの使用量も計測したのですが、もっとも使った場合で6MB程度でしたのでやはりメモリーの使用量の影響でもなさそうです。

いくつか実行するサーバやPHPのバージョンも異なるもので実行したのですが、結論としてはどこで実行しても同様の結果になるので、何か問題があると思うのですが、さすがに「echoの有無」のみだとさっぱり意味が分からない状況です。

2014/03/15 16:21:24
匿名回答2号

echoを最初や最後に持ってきても完走するんでしょうか。
#echoの位置に対する依存確認
出力内容を全てキャプチャする命令あったと思うので、そういうのでファイルに残してみるとか。
echoじゃなくファイルに出してみるとか。
#echo命令又は画面出力の有無に対する依存確認

2014/03/15 21:34:48

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

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

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

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

回答リクエストを送信したユーザーはいません