Это - мой код:
$zplHandle = fopen($target_file,'w');
fwrite($zplHandle, $zplBlock01);
fwrite($zplHandle, $zplBlock02);
fwrite($zplHandle, $zplBlock03);
fclose($zplHandle);
Когда файл будет сохранен? Это сразу после записи в него или после закрытия его?
Я спрашиваю это, потому что у меня есть Printfil, слушая файлы в папке, и печатает любой файл, который недавно создается. Если PHP сразу фиксирует сохранение после fwrite
, Я могу столкнуться с проблемами Printfil, не получив последующие записи.
Спасибо за справку.
Я сделал небольшой фрагмент кода, чтобы проверить это, и кажется, что после fwrite
новый контент будет обнаружен немедленно, а не после fclose
.
Вот мой тест на Linux.
#!/usr/bin/env php
<?php
$f = fopen("file.txt","a+");
for($i=0;$i<10;$i++)
{
sleep(1);
fwrite($f,"something\n");
echo $i," write ...\n";
}
fclose($f);
echo "stop write";
?>
После запуска сценария PHP я использую tail -f file.txt
для обнаружения нового содержимого. И он показывает новое содержимое одновременно с тегом вывода php.
файл будет сохранен на fclose. если вы хотите поместить содержимое в файл раньше, используйте fflush () .
Предполагая, что вы работаете с PHP 5.x, попробуйте вместо этого file_put_contents (), поскольку он объединяет открытие / запись / закрытие в один вызов. http://us3.php.net/manual/en/function.file-put-contents.php
PHP может записывать или не записывать содержимое немедленно. Между ними есть слой кеширования. Вы можете заставить его писать, используя fflush () , но вы не можете заставить его ждать, если не используете только одну fwrite ().