PHP, Curl, curl_exec(), curl_close() и файлы cookie

При использовании PHP с Curl необходимо вызывать curl_close() после каждого вызова curl_exec(), чтобы файлы cookie работали правильно, используя параметры CURLOPT_COOKIEJAR И CURLOPT_COOKIEFILE? Или я могу вызывать curl_exec() столько раз, сколько захочу, для разных URL-адресов на одном и том же сайте и при этом сохранять файлы cookie без вызова curl_close() после каждого? Могу ли я использовать curl_exec() много раз и просто закрыть его curl_close() в конце скрипта?


person tom    schedule 23.12.2010    source источник
comment
Проблема, с которой я сталкиваюсь, заключается в том, что файлы cookie, поддерживающие сеанс для нескольких исполнителей, похоже, ведут себя беспорядочно.   -  person tom    schedule 23.12.2010


Ответы (1)


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

Параметры cookiejar/file строго необходимы только для сохранения файлов cookie между отдельными дескрипторами/вызовами curl. Каждый из них независим от других, поэтому файлы cookie являются единственным способом обмена между ними.

person Marc B    schedule 23.12.2010
comment
Итак, если я продолжаю вызывать curl_exec() для одного и того же дескриптора curl, не закрывая его, мне не нужны параметры cookie? Будет ли он автоматически отслеживать файлы cookie для этого дескриптора? - person tom; 23.12.2010
comment
Подождите секунду .. Я думал, что даже если вы переходите с одной страницы на другую, используя один и тот же дескриптор curl, и, допустим, следующей странице нужны файлы cookie с предыдущей страницы, вам все равно нужно использовать COOKIEFILE ?? Я не думаю, что это правильно @Marc B - person arijeet; 28.09.2011
comment
@redskins80: Итак, нам все еще нужен файл cookie? а баночки с печеньем нет? И будет ли curl_close() удалять файлы cookie? или останется? - person SuperSpy; 22.01.2012