2010-01-16 27 views
10

Estoy trabajando en un cliente PHP para CouchDB. Mientras navegaba por la documentación de php.net con respecto a HTTP y cURL, me encontré con la extensión PECL_HTTP. A primera vista, creo que me gustaría usar esta extensión PECL en lugar de cURL porque es mucho más simple de usar, y de todos modos no estoy haciendo un trabajo HTTP muy complicado. Además, siempre me gusta probar cosas nuevas, así que no me importaría mojarme los pies.PHP PECL_HTTP vs cURL Extensión

En lo que a mi pregunta a la comunidad StackOverflow:

  • Alguien ha utilizado tanto el PECL_HTTP y extensiones CURL?
  • ¿La extensión PECL tiene algún problema serio de rendimiento?
  • ¿La extensión PECL es tan fácil de usar como aparece en la superficie?
  • ¿Es la biblioteca cURL probada y verdadera aún superior?

Editar: Como resultado, la extensión PECL_HTTP utiliza una parte del código fuente de cURL bajo el capó, por lo que no son completamente diferentes bestias. Ambos también son extensiones compiladas de PHP.

+0

No se olvide que puede acceder a los sitios utilizando corrientes. Por ejemplo, 'file_get_contents ('http://google.com');' descargará el origen de la página de inicio de google. – ryeguy

+1

@ryeguy: Y solo porque PHP está haciendo muy poco 'file_put_contents ('http://google.com', '...');' hackeará la página principal de Google por usted. –

+0

fie_get_contents() + stream_context también se puede utilizar para POSTAR datos (o llamar a otros métodos HTTP necesarios para CouchDB y otras llamadas REST) ​​ – johannes

Respuesta

2

La extensión PECL_HTTP ha demostrado ser mucho más fácil de usar, casi cortando mi código a la mitad en algunos lugares. :)

0

No he intentado PECL_HTTP todavía. Prefiero usar cURL, ya que primero puedo probarlo en línea de comando. Además, cURL está disponible en la instalación estándar de Linux, por lo que puedo esperar que esté disponible en varios hospedajes basados ​​en Linux. No sé sobre la disponibilidad de PECL, porque no uso ninguna de sus funciones en mi código.

3

En mi opinión, CURL es sencillo y fácil de recoger. En PHP Cookbook (O'Reilly, 2002) CURL fue elegido por varias razones (de rendimiento).

+0

cURL tiene finalmente más funciones que PECL_HTTP y porque es una extensión de código compilado, siempre se ejecutará más rápido, y hay mucho más material de referencia disponible para cURL cuando se quiere lograr escenarios difíciles. – Kitson

+1

@Kitson, las extensiones PECL también son extensiones compiladas;) –

+0

... y para las operaciones IO la ganancia de rendimiento es mínima: la mayor parte del tiempo se usa en la red. – johannes

2

Al principio tengo que decir que utilizamos ambos en nuestra empresa y desde el manejo me gusta php_http más y aprecio el trabajo de Mike.

Pero abandonamos php_http porque no está incluido en vanilla php. Estamos trabajando en un entorno de Windows y para cada extensión de pecl que no viene incluida por php, tenemos que compilarla nosotros mismos (lo que no es malo). Mientras compilamos, recibimos el error de que faltaban algunos encabezados. Resultó que fue totalmente nuestra culpa, porque está claramente indicado en la documentación.

Y puesto que la versión 2.0 de php_http, que cuenta con dos dependencias ninguno estándar: - raphf 1.0.0 o posterior - propro 1.0.0 o posterior

así que necesitábamos para compilar más de php_http única. Pero para propro 1.0.0 (2013-08-12) config.w32 faltaba en la descarga (al menos en el estado de la escritura). Así que tuvimos que escribir el nuestro. Y así sucesivamente ...

Al final lo conseguimos trabajando para PHP 5.5 VC11 x86, pero tomó algo de tiempo. En las empresas a veces no tienes tiempo para gastar en tales cosas. Curl siempre funciona fuera de la caja, porque está empaquetado. Esta podría ser una razón seria para no usar php_http.

Algo que realmente apreciaría es si php_http lo haría en vanilla php.

Espero que esto ayude algunos tomadores de decisiones ;-)