Внутри серверного сценария PHP, вызываемого через AJAX Request #1
, мне требуется PHP script A
с помощью оператора require
.
На странице, с которой этот AJAX Request #1
может быть запущен, я также предоставляю способ изменить этот script A
программно, нажав кнопку на той же странице через другой AJAX Request #2
.
Следовательно, для того, чтобы все работало правильно без перезагрузки страницы, мне нужно убедиться, что каждый раз, когда запускается AJAX Request #1
, требуется самое новое состояние script A
для выполнения ответ на AJAX Request #1
. Иногда это срабатывало, а иногда нет, и я не мог понять, почему, потому что мой сервер всегда отвечал кодом состояния 200, но иногда и необновленным ответом (показывая мне, что "старый" script A
имеет требуется на стороне сервера для создания ответа на AJAX Request #1
).
Покопавшись немного глубже, я узнал об OPcache (https://www.php.net/manual/en/book.opcache.php). При проверке с помощью phpinfo()
я подтвердил, что он работает на моем сервере, поэтому я думаю, что причина в этом. Мой требуемый script A
может быть кэширован, и, следовательно, это не всегда обновленный script A
, который используется на каждом AJAX Request #1
.
Моя идеальная цель - перезагрузить новейший script A
через require script A
оператор сценария PHP, который отвечает на AJAX Request #1
на каждый отдельный запрос.
Затем я наткнулся на следующие функции, по которым мы переходим к своим вопросам:
-
opcache_is_script_cached()
opcache_invalidate()
opcache_reset()
Мои вопросы:
1) Если я использую opcache_is_script_cached()
для проверки если соответствующий файл script A
находится в моем opcache, я странно получаю 1
в качестве ответа, а не TRUE
, как сказано в справке, поэтому я, прежде всего, не уверен в интерпретации этого 1
как логического 1
, что означает, что соответствующий script A
действительно находится в opcache? Если нет, то что еще означает этот ответ 1
и почему ответ по умолчанию TRUE
или FALSE
не отображается?
2) Сначала я подумал об использовании opcache_invalidate()
для удаления script A
из кеша перед оператором require script A
, но затем прочтите в примечании участника, что этого на самом деле недостаточно, чтобы гарантировать удаление сценария из opcache (https://www.php.net/manual/de/function.opcache-invalidate.php) ?? Следовательно, единственное решение, которое я вижу, - это изменить код в моем серверном сценарии PHP, отвечая на AJAX Request #1
, с:
require script A;
на:
opcache_reset();
require script A;
Поскольку у меня нет опыта работы с opcache, я боюсь сразу же это проверить. Также я не знаю, что это включает: сценарий этого вопроса запускается на странице моего бэкэнда, поэтому, например, было бы не лучше очищать весь opcache, и через это также повторно увеличить интерфейсный скрипт требует загрузки et c., при каждом запуске AJAX Request #1
. Другими словами, это opcache_reset()
единственное решение, которое мне нужно для достижения того, что я хочу, и что именно оно включает / удаляет из opcache?