public function saveProviders($from = 1) { $from = 34270; $step = 100; $max_steps = 100; $walk = true; while ($walk) { // [2] make the call to the API $data = ['rangoInicio' => $from, 'rangoFinal' => $from + $step]; // [2.1] the CURL stuff $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $this->apiProveedores2); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); $result = curl_exec($ch); $con = json_decode($result); foreach ($con as $p) { $provider = Provider::firstOrCreate(['rfc' => $p->rfc, 'name' => $p->name]); $provider->total = $p->total; // address $provider->street = $p->address->streetAddress; $provider->locality = $p->address->locality; $provider->region = $p->address->region; $provider->zip = $p->address->postalCode; $provider->country = $p->address->countryName; // contactPoint $provider->contact_name = $p->contactPoint->name; $provider->email = $p->contactPoint->email; $provider->phone = $p->contactPoint->telephone; $provider->fax = $p->contactPoint->faxNumber; $provider->url = $p->contactPoint->url; $provider->update(); } echo $from . "<br>"; $max_steps--; $from += $step; if ($max_steps < 1) { $walk = false; } } }