Время зарядки GD и разбора веба - PullRequest
3 голосов
/ 04 августа 2011

Я создал файл PHP, в котором карта рисуется с помощью GD на основе данных, полученных с другого сайта. Дело в том, что время выполнения PHP делает загрузку страницы очень медленной.

Вопрос в том, может ли этот код PHP выполняться только один раз в день? o есть ли шанс, что вы автоматически запустите веб-сервер?

Ответы [ 3 ]

2 голосов
/ 05 августа 2011

Вам необходимо кэшировать изображение карты и загрузить его из файла, если он уже существует. Восстановите это один раз в день. Этот скелетный код описывает, как этого можно достичь. При первой загрузке страницы, когда изображение устарело более чем на один день, оно будет восстановлено и сохранено в файл.

// If the file is older than 1 day, create a new one
if (filemtime("imagecache.jpg") < time() - 86400) {

  // Generate your new image and write it to a file
  // Assuming $im is an image from GD

  // UPDATE: fixed file_put_contents() because I didn't know imagejpeg() 
  // could write the file by itself.
  imagejpeg($im, "imagecache.jpg");
}
1 голос
/ 05 августа 2011

Много способов сделать это.Все они начинаются с наличия PHP-скрипта, который создает статический графический файл с помощью gd и сохраняет его где-то на диске.Это то, что вы покажете пользователям.

После того, как вы сгенерируете этот файл, ваш самый простой выбор может быть следующим:

  1. Укажите вашим пользователям статический файл и вызовите phpпериодически используя cron или что-то подобное.
  2. Укажите вашим пользователям скрипт PHP.Пусть ваш PHP-скрипт проверит временную метку графического файла, и, если он старше определенного возраста, создайте его заново и отправьте его пользователю.Таким образом, у вас есть некоторые накладные расходы PHP, но это меньше, чем генерирование графики каждый раз.
0 голосов
/ 05 августа 2011

Создание задания cron , которое выполняется один раз в день (предпочтительно во время небольшого трафика), чтобы выполнять тяжелую работу, сохранять или кэшировать результат (например, с помощью APC или memcached или даже просто перезаписывать).текущее используемое изображение с новым), и отобразите этот результат своим пользователям.

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