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...