ご教授お願いします。
PHPで、ログファイルを開き、特定の文字列が含まれる
行番号を取得したいと考えています。
以下の記述で、サイズの小さいログファイルでは
正常に行番号が取得出来ましたが、ログファイルが大きくなると
ファイルの読み込み自体が出来ていないようでした。
fopen関数で大きなサイズのファイルを扱うにはどのようにすれば
良いでしょうか。よろしくお願いいたします。

$file = fopen("log", "r");

$i = 1;
while( $i < 10000 ) {

$line[$i] = fgets($file);

if ($line[$i] == $str) {
$start = $i;
} else {
}


if ($line[$i] == $str2) {
$end = $i;
} else {
}

$i++;
}