ズバリ正解なところはわからないですが、単一で動くのに複数回で動かない場合は命令の問題ではなく件数の問題ではないでしょうか?(メモリ系)
あまりにも膨大な件数を扱うとサーバタイムアウトしてしまい処理が止まってしまいます。
(ループ関数のオーバーヘッド)
オーバーヘッドの場合は止まる前までの処理は行いますが、止まると強制的に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
追記
すみません書き忘れ。
あと、読み込みがずーっと終わらず砂時計の状態でも、件数が多い場合は処理が続いているのかもしれません。ただ単に重いだけという可能性。
まとめて複合化したデータを表示しようとすると全ての処理が終わるまで何も表示されません。一件一件処理が終わったら表示するようにしたら動いているのが確認できるかもしれません