各行の長さは約 200 文字で、約 5,000 行のテキスト ファイルがあります。各行には、実際に分割するために使用substr()
した 6 つの異なるデータが含まれています。たとえば、各行の文字 0 ~ 10 には Client# が含まれ、文字 10 ~ 20 には Matter# が含まれます。これはすべて順調で、必要以上に高速に実行されていました。
私の問題は、クライアント番号の先頭に 4 つのゼロがあり、それらを削除する必要があると上司から言われたときに発生しました。だから私は問題ないと思った-最初のsubstr()
関数をsubstr(0, 10)
(0から開始して10文字を取る)からsubstr(4, 6)
(4番目の文字から開始して6文字を取る)に変更したところ、4つの先行ゼロがスキップされ、行ってもいい。
ただし、に変更するsubstr(0, 10)
とsubstr(4,6)
、プロセスが停止し、完了するまでに時間がかかります。どうしてこれなの?
これが私のコードのスニペットです:
// open the file
$file_matters = fopen($varStoredIn_matters,"r") or exit("Unable to open file!");
// run until the end of the file
while(!feof($file_matters))
{
// place current line in temp variable
$tempLine_matters = fgets($file_matters);
// increment the matters line count
$linecount_matters++;
// break up each column
$clientID = trim(substr($tempLine_matters, 0, 10)); // THIS ONE WORKS FINE
//$clientID = trim(substr($tempLine_matters, 4, 6)); // THIS ONE MAKES THE PROCESS GRIND TO A HALT!!
$matterID = trim(substr($tempLine_matters, 10, 10));
//$matterID = trim(substr($tempLine_matters, 15, 5));
$matterName = trim(substr($tempLine_matters, 20, 80));
$subMatterName = trim(substr($tempLine_matters, 100, 80));
$dateOpen = trim(substr($tempLine_matters, 180, 10));
$orgAttorney = trim(substr($tempLine_matters, 190, 3));
$bilAttorney = trim(substr($tempLine_matters, 193, 3));
$resAttorney = trim(substr($tempLine_matters, 196, 3));
//$tolCode = trim(substr($tempLine_matters, 200, 3));
$tolCode = trim(substr($tempLine_matters, 200, 3));
$dateClosed = trim(substr($tempLine_matters, 203, 10));
// just does an insert into the DB using the variables above
}