первый релиз PEAR::HTTP_Request2

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Выпущена версия 2.1.1 с поддержкой SOCKS5 proxy (про неё тут выше по треду уже спрашивали). Вернее, поддержка появилась в 2.1.0, но я там пару багов пропустил.
 

Absinthe

жожо
Sad Spirit асинхронные запросы планируются?

PHP:
$request->sendAsync(function($response) { ... });
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Вот это было-бы действительно круто и с таким преимуществом другим решениям инструмент утёр бы нос без вопросов...
Спасибо, Капитан Очевидность! К сожалению, если бы это просто было реализовать, у конкурентов бы уже тоже всё было готово.

И вообще в похапэ не очень получится совсем асинхронно чё-то сделать, потому как хрен запустишь отдельный поток. Варианты либо pcntl_fork(), либо select. Но select придётся дёргать руками.

Т.е. возможный вариант работы такой
Код:
// инициализируем запрос(ы)
// отправляем запрос(ы)

// тут куча кода, который не имеет отношения к запросам

// тут мы начинаем делать select и получаем результаты запросов
Собственно тут выше по треду multiCurl выложен, он примерно так и работает.
 

Sufir

Я не волшебник, я только учусь
Спасибо, Капитан Очевидность! К сожалению, если бы это просто было реализовать, у конкурентов бы уже тоже всё было готово.
Спасибо, Капитан Очевидность! Но, если бы это просто было реализовать, и у конкурентов бы уже тоже всё было готово - то об этом никто бы и не заговорил.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
ходят слухи, что мультикурловые дескрипторы можно в либевент пихать. Сам не проверял еще.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я допилил свою либу с асинхронными псевдо-потоками cur-multi,
еще время на документацию найти - и можно выложить

а в чем суть асинхронности?
выполнять код, который не связан с запросом, пока ждем данные по курлу? в этом нет смысла.
запустить 50 одновременных запросов и обрабатывать данные от одного запроса, пока ждем данные для других? это есть.
 

Norton

Новичок
Как с помощью HTTP_Request2 задать IP с которого делать запрос ?

в курле для этого надо добавить обычную опцию
curl_setopt($ch,CURLOPT_INTERFACE,"192.168.0.1");

а здесь как задать опцию для запроса ?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Как с помощью HTTP_Request2 задать IP с которого делать запрос ?

в курле для этого надо добавить обычную опцию
curl_setopt($ch,CURLOPT_INTERFACE,"192.168.0.1");

а здесь как задать опцию для запроса ?
Пока никак, но вроде похапэшные stream'ы это тоже поддерживают, так что можно реализовать. Заведи feature request, что ли.
 

Norton

Новичок
Пока никак, но вроде похапэшные stream'ы это тоже поддерживают, так что можно реализовать. Заведи feature request, что ли.
Попробую.

Например в Zend дополнительные опции курла задаются вот так:
PHP:
$config = array( 
	"adapter"    => "Zend_Http_Client_Adapter_Curl", 
	"curloptions" => array(CURLOPT_INTERFACE=>"192.168.0.1")
        ); 
$client = new Zend_Gdata_HttpClient(null, $config);
с помощью GCurl можно :)
немогу. так как я использую класс PEAR::XML_RPC2 и у него зависимость от HTTP_Request2.
один из опциональных параметров в конструкторе
* 'httpRequest' => Preconfigured HTTP_Request2 instance to be used in executing the XML-RPC calls (optional)
 

weregod

unserializer
Norton, в чём проблема допилить самому и закинуть автору в каком-то виде, очевидно, возможность годная.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Так, у меня дошли руки выпустить новый релиз. Туда, в частности, вошла фича с указанием "обратного адреса":
PHP:
$request->setConfig('local_ip', '192.168.0.1');
Кроме того, исходники переехали на гитхаб и теперь могут ставиться при помощи компостера.
 

fixxxer

К.О.
Партнер клуба
Sad Spirit, а зачем вот такая жесть?

PHP:
                if (!class_exists($adapter, false)
                    && preg_match('/^HTTP_Request2_Adapter_([a-zA-Z0-9]+)$/', $adapter)
                ) {
                    include_once str_replace('_', DIRECTORY_SEPARATOR, $adapter) . '.php';
                }
Pear до сих пор запрещает использование autoload?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Sad Spirit, а зачем вот такая жесть?

PHP:
                if (!class_exists($adapter, false)
                    && preg_match('/^HTTP_Request2_Adapter_([a-zA-Z0-9]+)$/', $adapter)
                ) {
                    include_once str_replace('_', DIRECTORY_SEPARATOR, $adapter) . '.php';
                }
Pear до сих пор запрещает использование autoload?
Ну там не то чтобы что-то запрещает, но штатного autoload'а нету. Так что считай это тяжёлым наследием, так-то в основном PSR-0 и можно автолоадеры подключать.
 
Сверху