PHP как закешировать curl_init()?
Есть удаленный API с адресами у которого есть ограничения на подключения, допускается 60 новых подключений в минуту
С моей стороны логика такая: пользователь в поле пишет адрес и при каждом нажатие запускается аякс который запускает скрипт затем через Curl идет обращение к API
Как я понял при каждом запуске скрипт заново инициализуеться соединение curl_init() и вскором времени API перестает отвечать так как превышается лимит соединений
Пожалуйста подскажите как я могу закешировать curl_init()? или тут надо действовать по другому?
Ответы (2 шт):
У вас есть какой-то УРЛ и набор параметров, которые вы передаёте. Из них вам нужно построить уникальную строку (например, хэш sha). Эта строка будет ключом кэша.
При необходимости запроса, в проверяете в хранилище кэша этот ключ. Если ключ имеется, берёте данные из кэша и работаете с ними. Если ключа в кэше нет, выполняете запрос к апи, кладёте в кэш данные с этим ключом и обрабатываете данные.
В общем, проблему решил следующим способом:
- Нужно написать PHP-демона который сделает одно подключение, а потом, в цикле будет выполнять запросы по одному и тому же подключению
- Чтобы отправлять и получать данные из этого запущенного PHP-демона нужно использовать вебсокеты