문제

왜 내 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를 사용하면 포인터가 파일의 끝으로 이동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top