Smarty compile error

Тема в разделе "PHP", создана пользователем CNiks0N, 7 фев 2013.

Статус темы:
Закрыта.
Модераторы: latteo
  1. CNiks0N

    CNiks0N lamp.root

    Регистр.:
    28 ноя 2008
    Сообщения:
    230
    Симпатии:
    48
    PHP + Smarty:

    Короче суть вот в чём.
    Есть нагруженный сайт, обновляем tpl файлики, в этот момент пользователь открывает страницу, и пока по ftp закачивается новый файл компилятор хватает половину закачанного, видит ошибку и не выводит эту страничку. Далее ещё круче, т.к. страничка уже скомпилина, а время создания файла не изменилось то все остальные странички грузятся пустые.

    Я знаю как её решить (проверять по eval чтобы страница не пустая была), но вдруг уже кто-то писал заплатку ?

    UPD 7 фев 2013 в 11:36
    Ок.
    Спасибо за мнение и советы.

    Добавлено latteo: Благодарности раздавай кнопкой "мне нравится"
     
  2. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    Попробуй использовать ssh (sftp).
    В твоем случае разница в том, что при перекачке по ftp файл создается пустой, потом по частям закачивается. В случае с ssh файл должен сохраниться только когда будет полностью передан на сервер (естественно, это касается маленьких файлов; то есть, например, если закачивать на сервер фильм, ssh-клиенты сами разбивают поток на части и с каждой переданной частью сохраняют инфу в конец файла).
     
  3. CNiks0N

    CNiks0N lamp.root

    Регистр.:
    28 ноя 2008
    Сообщения:
    230
    Симпатии:
    48
    Я бы с удовольствием пользовался sftp, но с ним работа у меня замедляется на 2-3 секунду 1 обновление, т.к. диииико привык в коммандере и только клавиатурой.
    Ещё есть варианты ?
     
  4. recasher2k12

    recasher2k12

    Регистр.:
    19 фев 2012
    Сообщения:
    156
    Симпатии:
    78
    Подойдет любой вариант так, чтобы файл был сначала закачен, а потом пересохранен.
    Можно использовать дублирующую папку. Написать в таблицу cron чтобы раз в минуту проверял наличие изменившихся файлов в дублирующей папке, переписать их в боевую папку. И редактировать файлы в дублирующей папке.
    Также можно использовать SVN, Git или настроить любую реализацию WebDAV. Выбор за вами.
    В любом случае, что-то надо настраивать. В самом коде PHP было бы неправильно решать такого рода проблемы.
     
  5. unkn0wn

    unkn0wn

    Регистр.:
    22 дек 2006
    Сообщения:
    163
    Симпатии:
    86
    В этом случае поможет только закачивать во временную папку, после закачки - копирование из временной в боевую с заменой, руками или по крону - уже не принципиально.
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.405
    Симпатии:
    1.185
    Используй разум - отключай на время обновления сервер для пользователей, если даже гиганты российских соц. сетей себе это позволяют (одноклассники - часто, вк - гораздо реже), то почему бы и обычным смертным не использовать?
    Вот похожее спрашивали https://nulled.cc/threads/237210/
     
  7. CNiks0N

    CNiks0N lamp.root

    Регистр.:
    28 ноя 2008
    Сообщения:
    230
    Симпатии:
    48
    К сожалению данный вариант не приемлем, т.к. на сайте идут оплаты и если закрыть его на время проведения платежа будет очень плохо :(

    Сделал вариант с sftp : Zend Studio -> Remote Systems :)
    Всем спасибо
     
Статус темы:
Закрыта.