PHP: более быстрое выполнение cURL - PullRequest
1 голос
/ 08 февраля 2011

У меня есть приложение, которое использует cURL для захвата содержимого нескольких веб-сайтов. Я хотел бы оптимизировать это как-то. Можно ли будет реализовать шаблон проектирования с одним компонентом и каким-то образом прокрутить URL-адреса, для которых мне нужно содержимое через определенные промежутки времени, чтобы я мог создать его только один раз?

Прямо сейчас я устанавливаю и уничтожаю соединения для каждого звонка. Пример кода будет высоко оценен.

Спасибо.

Ответы [ 3 ]

1 голос
/ 08 февраля 2011

Ряд возможных решений приходит на ум. Самым простым, вероятно, является создание какого-то механизма кэширования. Сохраните ответ на диске и используйте его, пока он не устареет, затем выполните новый запрос на обновление кэша. Одно это должно значительно улучшить вашу производительность. Другой способ реализовать это - использовать кеширующий прокси-сервер.

Другой вариант - просто создать cronjob с помощью wget, извлекающим необходимый контент каждые пару минут и сохраняющим результат на диске. Затем просто получите доступ к этому контенту из своего приложения. Таким образом, вам никогда не придется ждать завершения запроса.

1 голос
/ 08 февраля 2011

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

Редактировать: И / или убедиться, что ваш curl поддерживает сжатый контент.

0 голосов
/ 08 февраля 2011

Конечно, просто используйте curl multi , чтобы запросы выполнялись параллельно. Посмотрите на пример на этой странице.

В качестве примечания: это не имеет ничего общего с шаблонами синглтона или дизайна. Хотя static позволяет вам сохранять постоянное состояние приложения между запросами в Java, в PHP это невозможно.

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