Comunidad de diseño web y desarrollo en internet online

PHP - ¿Cómo hacer que CURL se ejecute desde un Bucle?

Citar            
MensajeEscrito el 05 Oct 2019 11:35 am
Hola,
Necesito leer un fichero txt para insertar una linea a la vez en Servicio Web remoto.
Yo logro exito solo cuando ejecuto la aplicacion con un solo dato.
Pero se hago la lectura del fichero y intento insertar los datos , no pasa nada.
Gracias por la ayuda.

1 - Ejemplo de la aplicacion que se ejecuta solo con un dato.

Código PHP :

<?php
set_time_limit(0);

/* API URL */
$url = 'https:..';
$header = array("Authorization: Basic Q09CUkFSUjp2UT..","Content-Type: application/json");

/* Array Parameter Data */
$data = '{"cliente":"8609","acao":"858","motivo":"699","obs":"data-2019-09-20 php"}';

/* Init cURL resource */
$ch = curl_init($url);
/* pass encoded JSON string to the POST fields */
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

/* set the content type json */
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
/* set return type json */
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
/* execute request */
 $result = curl_exec($ch);
 echo $result.'<br>';  
/* close cURL resource */
curl_close($ch);
echo 'fim'.'<br>';
?>


2 - Necesito arreglar ese codigo que no funciona
2.1 - Fichero txt
'{"cliente":"8609","acao":"858","motivo":"699","obs":"data-2019-09-20 php"}'
'{"cliente":"8610","acao":"858","motivo":"699","obs":"data-2019-09-20 php"}'

2.2 - Code PHP

Código PHP :

<?php
/* Envio de multiplas lineas datos  */

set_time_limit(0);

$dir = 'C:/00cargas'; // directorio para lectura del fichero
$dir2= 'C:/00cargasok/';

$dh = opendir($dir);
$arq = readdir($dh);

  // bucle que para leer todos los ficheros
   while (false != ($arq = readdir($dh))){
   // evalua ficheros
      $exten = substr($arq,strlen($arq)-3,3);
      if ($exten != "" && $exten !="." && strtolower($exten) !="jpg" && strtolower($exten) !="gif" && strtolower($exten) !="bmp"){
      
         $cont_lin=0;
         $linea="";
         $data="";

         /* API URL */
      $url = 'https:...';
      $header = array("Authorization: Basic Q09CUkFSUjp2UThYM....=","Content-Type: application/json");
         
         // abrir fichero
         $arquivo = fopen($dir."/".$arq,"r");

        // evalua se hay fichero para leer
         if ($arquivo){
            while (!feof ($arquivo)){
               $linea = fgets($arquivo);
          $data =  substr($linea,0,strlen($linea)-2); // quita el '\r\n'

              /* Init cURL resource */
          $ch = curl_init($url);

             //curl_setopt($ch, CURLOPT_URL, $url);
               /* pass encoded JSON string to the POST fields */
               curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
                echo $data.'<br>';
               /* set the content type json */
               curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
                
               /* set return type json */
               curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
               
               /* execute request */
                $result = curl_exec($ch);

                  if (curl_errno($ch)) {
                        echo 'Error: ' . curl_error($ch).'<br>';
                  }   
                  /* close cURL resource */
                  curl_close($ch);
            }
            fclose($arquivo);
       }// cierra el WHILE $arquivo
     }// cierra le  WHILE exten
  }// cierra el  WHILE readdir
?><?php
/* Envio de multiplas lineas datos  */

set_time_limit(0);

$dir = 'C:/00cargas'; // directorio para lectura del fichero
$dir2= 'C:/00cargasok/';

$dh = opendir($dir);
$arq = readdir($dh);

  // bucle que para leer todos los ficheros
   while (false != ($arq = readdir($dh))){
   // evalua ficheros
      $exten = substr($arq,strlen($arq)-3,3);
      if ($exten != "" && $exten !="." && strtolower($exten) !="jpg" && strtolower($exten) !="gif" && strtolower($exten) !="bmp"){
      
         $cont_lin=0;
         $linea="";
         $data="";

         /* API URL */
      $url = 'https:...';
      $header = array("Authorization: Basic Q09CUkFSUjp2UThYM....=","Content-Type: application/json");
         
         // abrir fichero
         $arquivo = fopen($dir."/".$arq,"r");

        // evalua se hay fichero para leer
         if ($arquivo){
            while (!feof ($arquivo)){
               $linea = fgets($arquivo);
          $data =  substr($linea,0,strlen($linea)-2); // quita el '\r\n'

              /* Init cURL resource */
          $ch = curl_init($url);

             //curl_setopt($ch, CURLOPT_URL, $url);
               /* pass encoded JSON string to the POST fields */
               curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
                echo $data.'<br>';
               /* set the content type json */
               curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
                
               /* set return type json */
               curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
               
               /* execute request */
                $result = curl_exec($ch);

                  if (curl_errno($ch)) {
                        echo 'Error: ' . curl_error($ch).'<br>';
                  }   
                  /* close cURL resource */
                  curl_close($ch);
            }
            fclose($arquivo);
       }// cierra el WHILE $arquivo
     }// cierra le  WHILE exten
  }// cierra el  WHILE readdir
?><?php
/* Envio de multiplas lineas datos  */

set_time_limit(0);

$dir = 'C:/00cargas'; // directorio para lectura del fichero
$dir2= 'C:/00cargasok/';

$dh = opendir($dir);
$arq = readdir($dh);

  // bucle que para leer todos los ficheros
   while (false != ($arq = readdir($dh))){
   // evalua ficheros
      $exten = substr($arq,strlen($arq)-3,3);
      if ($exten != "" && $exten !="." && strtolower($exten) !="jpg" && strtolower($exten) !="gif" && strtolower($exten) !="bmp"){
      
         $cont_lin=0;
         $linea="";
         $data="";

         /* API URL */
      $url = 'https:...';
      $header = array("Authorization: Basic Q09CUkFSUjp2UThYM....=","Content-Type: application/json");
         
         // abrir fichero
         $arquivo = fopen($dir."/".$arq,"r");

        // evalua se hay fichero para leer
         if ($arquivo){
            while (!feof ($arquivo)){
               $linea = fgets($arquivo);
          $data =  substr($linea,0,strlen($linea)-2); // quita el '\r\n'

              /* Init cURL resource */
          $ch = curl_init($url);

             //curl_setopt($ch, CURLOPT_URL, $url);
               /* pass encoded JSON string to the POST fields */
               curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
                echo $data.'<br>';
               /* set the content type json */
               curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
                
               /* set return type json */
               curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
               
               /* execute request */
                $result = curl_exec($ch);

                  if (curl_errno($ch)) {
                        echo 'Error: ' . curl_error($ch).'<br>';
                  }   
                  /* close cURL resource */
                  curl_close($ch);
            }
            fclose($arquivo);
       }// cierra el WHILE $arquivo
     }// cierra le  WHILE exten
  }// cierra el  WHILE readdir
?>

Por Bonfim

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 05 Oct 2019 12:16 pm
Lo segundo que pusiste repite lo mismo tres veces y no tiene ningun sentido, si tienes que leer varios archivos y mandarlos deberia ser algo asi

- Abres la sesion de CURL
- Abres el loop de lectura del directorio
- Haces el post con curl
- Cierras curl cuando el loop ha terminado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.