cURL scripts dependientes funcionando indefinidamente

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 2nd, 2010, 12:49 pm

Ive tenía un par de problemas con secuencias de comandos que dependen de cURL colgando tiempo suficiente para que mi equipo ha tenido que matar a los procesos de PHP y me dice al respecto. La primera vez que sucedió fue con un script que se ejecuta a través de cron y simplemente algo publicado en Twitter cada día. La época más reciente, sin embargo, fue con un script que tiene una interfaz de usuario HTML y las imágenes las peticiones de un par de servidores en el fondo.

Por suerte las dos veces su sido algo que sólo puede desactivar y no preocuparse.

Estaban seguros de que tiene algo que ver con mi clase cURL perezoso y cómo depende de los tiempos de espera por defecto que se presente. Así que por el amor de depuración, creo que mi clase de malos post cURL aquí, luego fijarla y después el resultado en un puesto más adelante.

PHP Código: [ Select ]
<?php
 
class cURL
{
   protected $conn;
   public $opts = array(
      CURLOPT_HEADER       => 0,
      CURLOPT_RETURNTRANSFER  => 1,
      CURLOPT_FOLLOWLOCATION  => 1,
      CURLOPT_NOBODY       => 0
   );
   public $http_status;
   public function __construct($opts = array())
   {
      $this->conn = curl_init();
      foreach($opts as $key => $val)
      {
         $this->opts[$key] = $val;
      }
      curl_setopt_array($this->conn, $this->opts);
 
      return $this;
   }
   public function get($url, $opts = array())
   {
      curl_setopt($this->conn, CURLOPT_URL, $url);
      foreach($opts as $key => $val)
      {
         $this->opts[$key] = $val;
         curl_setopt($this->conn, $key, $val);
      }
      $returns = curl_exec($this->conn);
      $this->http_status = curl_getinfo($this->conn, CURLINFO_HTTP_CODE);
      return $returns;
   }
   public function post($url, $data)
   {
      return $this->get($url, array(
         CURLOPT_POST         => 1,
         CURLOPT_POSTFIELDS   => $data
      ));
   }
}
 
?>
  1. <?php
  2.  
  3. class cURL
  4. {
  5.    protected $conn;
  6.    public $opts = array(
  7.       CURLOPT_HEADER       => 0,
  8.       CURLOPT_RETURNTRANSFER  => 1,
  9.       CURLOPT_FOLLOWLOCATION  => 1,
  10.       CURLOPT_NOBODY       => 0
  11.    );
  12.    public $http_status;
  13.    public function __construct($opts = array())
  14.    {
  15.       $this->conn = curl_init();
  16.       foreach($opts as $key => $val)
  17.       {
  18.          $this->opts[$key] = $val;
  19.       }
  20.       curl_setopt_array($this->conn, $this->opts);
  21.  
  22.       return $this;
  23.    }
  24.    public function get($url, $opts = array())
  25.    {
  26.       curl_setopt($this->conn, CURLOPT_URL, $url);
  27.       foreach($opts as $key => $val)
  28.       {
  29.          $this->opts[$key] = $val;
  30.          curl_setopt($this->conn, $key, $val);
  31.       }
  32.       $returns = curl_exec($this->conn);
  33.       $this->http_status = curl_getinfo($this->conn, CURLINFO_HTTP_CODE);
  34.       return $returns;
  35.    }
  36.    public function post($url, $data)
  37.    {
  38.       return $this->get($url, array(
  39.          CURLOPT_POST         => 1,
  40.          CURLOPT_POSTFIELDS   => $data
  41.       ));
  42.    }
  43. }
  44.  
  45. ?>
Strong with this one, the sudo is.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Julio 2nd, 2010, 12:49 pm

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 2nd, 2010, 1:01 pm

Parece que debo ser bueno para ir simplemente añadiendo estas opciones para mi conjunto predeterminado de opciones. ( opciones de páginas de manual )

Código: [ Select ]
CURLOPT_FORBID_REUSE => true,
CURLOPT_CONNECTTIMEOUT    => 3,
CURLOPT_LOW_SPEED_LIMIT    => 1024,
CURLOPT_LOW_SPEED_TIME    => 5,
CURLOPT_MAXREDIRS            => 10,
CURLOPT_TIMEOUT                => 30
  1. CURLOPT_FORBID_REUSE => true,
  2. CURLOPT_CONNECTTIMEOUT    => 3,
  3. CURLOPT_LOW_SPEED_LIMIT    => 1024,
  4. CURLOPT_LOW_SPEED_TIME    => 5,
  5. CURLOPT_MAXREDIRS            => 10,
  6. CURLOPT_TIMEOUT                => 30


Im un poco inseguro acerca de ese par LOW_SPEED sin embargo.
Strong with this one, the sudo is.

Publicar Información

  • Total de mensajes en este tema: 2 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 137 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC