powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / include тянет старую версию файла
7 сообщений из 7, страница 1 из 1
include тянет старую версию файла
    #39362018
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Помогите кто знает. Есть 2 экшена:
1. Инклуд файла и обработка данных в нём
2. Перезапись этого файла и перенаправление на первый action

Итак, вот код соответственно
Код: php
1.
2.
3.
4.
5.
    public function actionModulesList(){
        var_dump(file_get_contents(\Yii::getAlias("@app")."/config/modules.php"));
        echo "<br><br>";
        var_dump($enabledModulesList = include \Yii::getAlias("@app")."/config/modules.php");
    }


Код: php
1.
2.
3.
4.
5.
    public function actionModuleDisable(){
        // ... тут немного левого кода
        file_put_contents(\Yii::getAlias("@app")."/config/modules.php", "<?php\nreturn ".  var_export($modules, true).";", LOCK_EX);
        $this->redirect(\yii\helpers\Url::toRoute(['/configuration/admin/modules-list']));
    }



Основная проблема
Как видите в первом экшене прям один за другим расположены file_get_contents и include. При этом результат вывода первой инструкции - новая версия файла, а второй - старая.

С чем может быть связано такое поведение и как это побороть? Сначала думал, что инклуд плюёт на блокировку, но учитывая что функция расположенная перед инклуд возвращает уже новую версию файла, данная гипотеза отпала. Тупик
...
Рейтинг: 0 / 0
include тянет старую версию файла
    #39362027
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, думаю следует добавить для ясности, что если обновить страницу через секунду-другую, то и инклуд вернёт правильные отредактированные данные.

На какой-то кэш чтоль похоже... не пойму :(
...
Рейтинг: 0 / 0
include тянет старую версию файла
    #39362034
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опкэш включен?
...
Рейтинг: 0 / 0
include тянет старую версию файла
    #39362046
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnoguопкэш включен?

Похоже да
консольprogramer@newDebian:~$ php -i | grep opcache.enable
opcache.enable => On => On
opcache.enable_cli => Off => Off
opcache.enable_file_override => Off => Off


Я его вообще не настраивал. Да и не помню что бы ставил, похоже из коробки вместе с пыхой приехало (или с каким-нить другим модулем)

Сейчас попробую его отключить.
...
Рейтинг: 0 / 0
include тянет старую версию файла
    #39362048
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnoguопкэш включен?

Да. В этом дело. Спасибо большое. Надо заставить его этот файл принудительно перечитать. Теперь понятно в какую сторону смотреть. Впервые с таким столкнулся, был крайне удивлён (раньше не приходилось конфиги на лету перезаписывать)
...
Рейтинг: 0 / 0
include тянет старую версию файла
    #39362054
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
opcache_invalidate вот такая штука есть, чтобы не отключать
...
Рейтинг: 0 / 0
include тянет старую версию файла
    #39362060
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

ага. уже сделал... Оказывается opcache быстро гуглится :)

За помощь большое спасибо... сам ещё фиг знает сколько бы голову ломал и придумывал что это может быть.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / include тянет старую версию файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]