Parse error: syntax error, unexpected end of file...

Started by sхс on 2024-07-04 18:40 — 5 replies, 1052 views

#1
Если в момент сохранения файла page_header.tpl кто-то решит в этот же момент открыть сайт, то получаем ошибку
Parse error: syntax error, unexpected end of file in /var/www/site/data/www/site.ru/cache/tpl_default_page_header.tpl.php on line 362
Из-за того, что файл кэша формируется из частично сохраненого tpl
Лечится удалением cache/tpl_default_page_header.tpl.php

Может есть у кого идеи как бороться с этим?
#2
Часто сохраняете? Может следует применить нормальный кэш
#3
Часто сохраняете? Может следует применить нормальный кэш
У меня в админке стоит memcache. Но он не относится к кэшу файлов шаблона.
Сохраняю часто и такое случается только при сохранении файлов page_header.tpl или page_footer.tpl и при медленном интернете

Надо бы добавить какую синтаксическую проверку кода
#4
У меня в админке стоит memcache. Но он не относится к кэшу файлов шаблона.
Сохраняю часто и такое случается только при сохранении файлов page_header.tpl или page_footer.tpl и при медленном интернете

Надо бы добавить какую синтаксическую проверку кода
Комплексным решением было бы отказаться от текущего шаблонизатора в пользу чего-то более нормального, например Smarty. Касаемо ошибки, постараюсь что-нибудь придумать. Но скажу сразу, она у меня ни разу не воспроизводилась.
#5
Может есть у кого идеи как бороться с этим?
Можно в файле кэша записывать временную метку, которую после сравнивать с временной меткой последнего изменения файла кэша (функция filemtime). Тоесть если временная метка изменения файла - больше временной метки записанной внутри файла, то делать обновление кэша. Так мы точно будем знать что в файле были несанкционированные изменения.

ЗЫ
Мне кажется это достаточно ресурсоемко, если такую проверку делать каждый раз при подгрузке шаблона из кэша. Можно было бы эту задачу переложить на крон например... Но тогда легче уж самому ручками кэш очистить, чем ждать условные 10-15 минут.
#6
Внедрили новый шаблонизатор, там такого нет.