У меня есть довольно сложное index.php
теперь, и я хотел бы только выполнить его один раз в час. Что лучший способ состоит в том, чтобы достигнуть этого? Некоторые идеи я имел
apc_store($page, 60*60*)
- Я чувствую, что это не то, для чего APC и будет, вероятно, делать что-то плохо к другим частям моего сайтаЯ немного изменил ответ Роулфа и Джамителина .
Создайте 3 файла:
index.html
<meta http-equiv="refresh" content="0;url=/index_update.php" />
index.php
<?php // do all your normal stuff ?>
index_update.php
<?php
$file = "index.html";
$time = 60 * 10 - (time() - filemtime($file));
# this is on the first install
if (filemtime($file) != filectime($file))
$time = 0;
if ($time > 0) {
die("Data was already updated in the 10 minutes. Please wait another " . ($time) . " seconds.");
}
ob_start();
require "index.php";
$data = ob_get_contents();
$fp = fopen($file, "w");
fwrite($fp, $data);
fclose($fp);
header("Location: /");
И затем cronjob:
*/15 * * * * curl http://example.com/index_update.php
Итак, если кто-то наткнется на страницу после производственного нажатия, он просто прозрачно создаст для вас новый index.html, в противном случае ваша cronjob будет делать это каждые 15 минут.
Просто убедитесь, что index.html доступен для записи вашему серверу Apache. Если это звучит пугающе, просто запустите задание cron php index_update.php
от имени другого пользователя с правами записи в index.html . Однако у вас не будет доступа ко всей среде apache.
Надеюсь, это поможет, комментарии приветствуются.
Простейшие шаги:
http://maven.apache.org/download.html#Installation
Вы упомянули некоторые шаги на сайте Apache. Это та страница, на которую вы смотрели? С каким шагом у вас возникли проблемы?
-121--3113815- Установка Maven действительно проста: Загрузите ЗАСТЕЖКУ -МОЛНИЮ с сайта, распакуйте его в любом каталоге вашего жесткого диска, а затем просто добавьте каталог bin/
в системную переменную PATH
Windows. Таким образом, вы сможете выполнить команду mvn...
из любого другого каталога.
Доставка статических страниц всегда является наиболее оптимальным способом. Поэтому используйте, например, Cron или любую другую службу расписания по вашему выбору, чтобы создавать статическую версию индекса один раз в час и чтобы она записывала его в файл, например index.html. Вы даже можете создать его как .php, если вам все еще нужны некоторые динамические части в индексе.
Я бы сказал, что это абсолютный лучший способ. Конечно, это небольшая боль, чтобы справиться с настройкой chmod для файла, но это не такая большая проблема.
Вам действительно стоит взглянуть на Memcached (отличная поддержка php .)
Еще один хороший вариант заключается в настройке сервера кэша Squid .
JavaCC - «компилятор-компилятор» (генератор синтаксического анализатора) для Java. Для него существует множество грамматических файлов, в том числе один для Java 1.5.
-121--1090282-Во-первых, массив должен быть достаточно большим для хранения последовательности:
unsigned char m_Test[20];
, затем используется strcpy. Вы должны привести первый параметр, чтобы избежать предупреждения:
strcpy( (char*) m_Test, "Hello World" );
Или если вы хотите быть пуристом C++:
strcpy( static_cast <char*>( m_Test ), "Hello World" );
Если вы хотите инициализировать последовательность, а не назначить ее, вы также можете сказать:
unsigned char m_Test[20] = "Hello World";
-121--2496137- Когда придет следующий посетитель, сначала найдите сохраненный файл и, если он существует, не выполняйте весь код в файле index.php. Базовым примером может быть
if (file_exists ($ cacheFileName))
{
требуется $ cacheFileName;
выход;
}
//Далее приводится остальная часть кода index.php
//..
//предполагая, что ваш выход буферизирован и содержится в $ output:
эхо $ выход;
$ cacheFileName = '/path/to/your/file.inc ';
file_put_contents ($ cacheFileName, $ output);
Набор cron-задания, которое будет удалено сохраненный файл кэша с диска каждый час или так часто, как вам нужно кому. Кроме того, в index.php на каждой странице проверьте, как давно был создан кэшированный файл, и создайте новый файл кэша, если он был длиннее, чем нужно. Задание cron проще настроить.
Однако для ответа на глубокий философский вопрос сохранение сгенерированных выходных данных на диск в отдельных файлах, вероятно, является лучшим способом, если вы не хотите полагаться на решения для кэширования сторонних вечеринок. APC хорошо подходит для кэширования кода, который будет регенерировать страницы, когда это необходимо, и memcached, безусловно, перегружен, если мы говорим о небольшом (ish) приложении.
Сохраните страницу в статический файл и используйте правила .htaccess для обслуживания статической страницы.
Я не уверен в точных деталях, но думаю, что это делают codeignitor и boost для drupal.