人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

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

●質問者: 匿名質問者
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号

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

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

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

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

とかでしょうか。


匿名質問者さんのコメント
ご回答ありがとうございます。 ちょっとソースのサイズは大きすぎる(業務関連のもの)ので掲載できないのですが。 外部との通信等は行わないプログラムです。 単純に予め内部で設定した変数(配列)に対して特定の処理を行い、その結果を返すもの。 また、不思議な事としては、その与える変数を変更しない状態で実行するとプログラムが完走しないのですが、途中、適当にいくつか「echo」を挟みなんでもいいので出力させると完走する部分です。 最初はechoを挟んだ部分にゴミが混ざっているような事があるのかもと思い。前後の改行や空白を置き換えたりしたのですが、結果的には「echo」を挟み部分に意味などなく、どこでもよいので適当に設定すると完走するという状態です。 その後、メモリの使用量も計測したのですが、もっとも使った場合で6MB程度でしたのでやはりメモリーの使用量の影響でもなさそうです。 いくつか実行するサーバやPHPのバージョンも異なるもので実行したのですが、結論としてはどこで実行しても同様の結果になるので、何か問題があると思うのですが、さすがに「echoの有無」のみだとさっぱり意味が分からない状況です。

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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ