Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
¿Por qué ejecuta la llamada a la API dos veces cuando hay una suspensión en el código? (PHP/Laravel)
public function createall() { $users = User::orderBy('id', 'ASC') ->where('server', 'Demo') ->where('enable', '1') ->where('mt4_account', '!=', 0) ->take(4) ->get(); foreach ($users as $user) { $server = Server::where('Serverdesc', $user->server)->first(); $post = [ 'server' => $server->serverdesc, 'api_key' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'login' => intval($user->mt4_account), ]; $datapost = json_encode($post); // initialize cURL $ch = curl_init(); // set options curl_setopt($ch, CURLOPT_URL, "http://xxxxxxxxxxxxxxxxx/closetrades"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $datapost); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($datapost)) ); $result = curl_exec($ch); curl_close($ch); sleep(5); $ptr = fsockopen($server->serveraddress, $server->serverport); // Checking errors if (!$ptr) { dump("Connection error"); exit; } $useracc = $user->mt4_account; $userpass = $user->mt4_pass; $request = "WUSERINFO-login=" . $useracc . "|password=" . $userpass . "\nQUIT\n"; fputs($ptr, $request); while (!feof($ptr)) { // Reading the string of symbols $line = fgets($ptr, 128); // End of result transmission flag if ($line == "end\r\n") { fclose($ptr); break; } // Processing $data = (explode(chr(9), $line)); if (substr($data[0], 0, 4) == "Bala") { $balance = substr($data[0], 9, strlen($data[0]) - 11); dump($data, $useracc, $userpass, $balance); } } } }

Con la función de suspensión en el código, la llamada a la API anterior, y aparentemente solo la llamada a la API, se ejecuta dos veces por cada registro. Veo que la API escribe los resultados en la ventana del terminal del servidor, así que estoy absolutamente seguro de que se ejecuta dos veces.

Elimino la función de suspensión y la llamada a la API se ejecuta una vez por cada registro. La ventana de la terminal en el servidor muestra la cantidad correcta de llamadas...

El resto del código, por ejemplo, los que descargan las variables, se imprimen solo una vez, por lo que aparentemente esa parte se ejecuta solo una vez...

¿Por qué? ¿Cómo? estoy estupefacto...

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda