Визуализация шаблона с помощью PHP - PullRequest
0 голосов
/ 04 января 2012

В настоящее время я работаю над сайтом New, и серверная часть я пишу с нуля без использования PHP Framework.

Меня беспокоит необоснованный периодический запрос к MySQL ("Что это значит! :)")

На первой странице пользователь будет видеть только обновленные сообщения, поэтому я подумал, что, когда администратор страницы вставит сообщение, я буду отображать .html Файл с обновленными последними публикациями, и пользователи будут перенаправлены туда, где все сообщения там и все нормально (нет выполнения php, нет запросов MySQL к большой базе данных). Пока Index.php был выполнен, сделал выбор в MySQL и представил данные, теперь я хочу выполнить Index.php, получить его содержимое и сохранить как Index.html

Итак, есть ли способ вызвать файл .PHP, выполнить его локально и сохранить выходные данные в файл HTML, точно так же, как пользователь выполнит.

Ответы [ 5 ]

2 голосов
/ 04 января 2012

Да. Что вы можете сделать, это использовать библиотеку Curl, вызвать ваш index.php с полным URL. (Например. http://127.0.0.1/index.php). Таким образом, вы берете вывод выполненного index.php вместо его кода. Затем, используя функцию file_put_contents, вы можете сохранить вывод в файле index.html.

2 голосов
/ 04 января 2012

Самый простой способ сделать это - использовать буферизацию вывода PHP и сохранить буфер вывода в файле.

ob_start();
// process page here
$buffer = ob_get_flush(); // this will display the contents of the output buffer and return the contents into $buffer
file_put_contents('index.html', $buffer);
0 голосов
/ 04 января 2012

Некоторые высказывания:

  1. Базы данных, предназначенные для запроса. Ничего принципиального в "периодическом запросе к MySQL" нет.

  2. На веб-сайте в реальном мире будет не только динамическая часть one : будут такие вещи, как баннеры, количество комментариев, свежие сообщения в блоге и тому подобное.

  3. Stackoverflow использует такой способ кэширования. Оказывается, очень раздражает , когда вы пытаетесь обновить страницу, чтобы получить новые данные, и она ничего не возвращает.

  4. Преждевременная оптимизация - корень всего зла.

0 голосов
/ 04 января 2012

Я предлагаю вам взглянуть на что-то вроде Varnish , которое находится перед вашим веб-приложением и обеспечивает уровень кэширования.

Поскольку оно находится между пользователем и вашим приложением, это язык/ framework не зависит, поэтому усилия по интеграции имеют тенденцию быть ниже.

(я понимаю, что это не дает точного ответа на ваш вопрос с точки зрения деталей реализации, но я хочу отметить, что внутреннее кэширование вашего приложения неединственный вариант для уменьшения загрузки базы данных)

0 голосов
/ 04 января 2012

Просто краткая подсказка:

Ваш php-файл получает данные из базы данных и сохраняет их результаты через выходной буфер и сохраняет все в html-файле.Ваш скрипт просто должен проверить, существует ли файл .html или нет.Если нет> создать его;еще> включить его / распечатать содержимое.

Слишком просто, и вам не нужно постоянно запрашивать БД.

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