foreach構文についてなのですが、
1万行に渡るデータを、一行ずつ拾って、という処理をさせていると、
foreach構文の後ろを実行せずブラウザが完了と返してきます。
1万行が多いのか、foreach構文の中身の処理が多いのか、判別つきませんが、
ちゃんときっちり完了させる書き方ってありますでしょうか?
(タイムアウトなのでしょうか?)

foreachに送る@配列を1000ずつとかに切って、それの処理が終わるのを待ってから次の1000を処理する、とか、
いろいろ考えたのですがその待たせるという処理の仕方も思いつかなかったです。
なにか方法ありませんでしょうか?
お教えくださいますようお願いいたします。