Почему мой веб-сервер с общим хостом кэширует доступ к файлу моего скрипта PHP? - PullRequest
0 голосов
/ 22 марта 2020
Сценарий

My PHP, работающий на сервере веб-сайта моего общего хоста, записывает на сервер текстовый файл для сохранения данных между вызовами самого себя. Проблема в том, что чтение текстового файла, кажется, показывает версию из недавнего прошлого; последней версии файла там нет. Это как если бы сервер кэшировал доступ к файлу моего скрипта.

Более подробно: В скрипте есть два режима: запись и чтение, в зависимости от ( не немецко ) .

В режиме записи сценарий содержит форму HTML, в которую пользователь вводит данные. Кнопка Submit перезагружает тот же сценарий с данными пользователя, закодированными в URL, как переменные GET. Скрипт добавляет данные в файл на сервере. Код:

    $dfile = fopen("datfile.txt","a");
    fwrite($dfile, $_GET['myname']."\n");
    fclose($dfile);

В режиме чтения скрипт считывает и отображает файл данных:

    $dfile = fopen("datfile.txt","r");
    if($dfile) while(!feof($dfile))
        echo fgets($dfile)."<br>";
    fclose($dfile);

Проблема является то, что то, что видит читатель, не обязательно является самой последней версией автора. Это часто версия из недавнего прошлого, как будто сервер кеширует чтение файла скрипта. Я использую FTP, чтобы удостовериться, что файл действительно содержит.

Я пробовал несколько способов очистки кешей, но безрезультатно. Много PHP версий, от 4.x до 7.3.

1 Ответ

0 голосов
/ 24 марта 2020

Я нашел следующий сайт: https://www.php.net/manual/en/function.clearstatcache.php

Прокрутите путь вниз и там будет написано:

"Обратите внимание, что эта функция влияет только на метаданные файла. Однако все функции файловой системы PHP также выполняют свое собственное кэширование фактического содержимого файла. Вы можете использовать директиву realpath_cache_size = 0 в PHP .ini, чтобы отключить кэширование содержимого, если хотите. Время ожидания кэширования содержимого по умолчанию равно 120 сек. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...