$ file-> eof () PHP의 splfileObject를 사용할 때 항상 false를 반환합니다.
-
13-12-2019 - |
문제
왜 내 PHP 스크립트가 매달려 있습니까?
$path = tempnam(sys_get_temp_dir(), '').'.txt';
$fileInfo = new \SplFileInfo($path);
$fileObject = $fileInfo->openFile('a');
$fileObject->fwrite("test line\n");
var_dump(file_exists($path)); // bool(true)
var_dump(file_get_contents($path)); // string(10) "test line
// "
var_dump(iterator_count($fileObject)); // Hangs on this
.
Last Line (iterator_count(...
)을 삭제하고 다음과 같이 바꿉니다.
$i = 0;
$fileObject->rewind();
while (!$fileObject->eof()) {
var_dump($fileObject->eof());
var_dump($i++);
$fileObject->next();
}
// Output:
// bool(false)
// int(0)
// bool(false)
// int(1)
// bool(false)
// int(2)
// bool(false)
// int(3)
// bool(false)
// int(4)
// ...
.
$fileObject->eof()
는 항상 false를 반환하여 무한 루프를 얻습니다.
왜 이러한 일이 일어나고 있습니까?줄 계산을 가져와야합니다.
해결책
코드에서 보는 것에 따라이 줄에서 Mode a
로 파일을 열고 있습니다.
$fileObject = $fileInfo->openFile('a');
.
그렇게 할 때 쓰기 전용 :
$fileObject->eof()
파일을 읽어야합니다. a+
로 파일을 열어 읽기 / 쓰기를 허용합니다.
$fileObject = $fileInfo->openFile('a+');
.
ps : a
또는 generacodicicetagcode를 사용하면 포인터가 파일의 끝으로 이동합니다.
제휴하지 않습니다 StackOverflow