Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: curl w tle
Forum PHP.pl > Forum > PHP
shpaque
mam sobie taki multicurl

  1. $count = 1;
  2. foreach ($guests as $g) {
  3. $url = 'http://api.ipstack.com/'.$g['customer']['ip'].'?access_key='.$apiAcessKey.'&output=json';
  4. ${'ch'.$count} = curl_init($url);
  5. curl_setopt(${'ch'.$count}, CURLOPT_RETURNTRANSFER, true);
  6. $count++;
  7. }
  8.  
  9. $mh = curl_multi_init();
  10. $count = 1;
  11. foreach ($guests as $g) {
  12. curl_multi_add_handle($mh, ${'ch'.$count});
  13. $count++;
  14. }
  15.  
  16. $running = null;
  17. do {curl_multi_exec($mh, $running);}
  18. while ($running);
  19.  
  20. $count = 1;
  21. foreach ($guests as $g) {
  22. curl_multi_remove_handle($mh, ${'ch'.$count});
  23. $count++;
  24. }
  25. curl_multi_close($mh);
  26.  
  27. $count = 1;
  28. foreach ($guests as $g) {
  29. ${'response'.$count} = curl_multi_getcontent(${'ch'.$count});
  30. $jsonData[$count] = json_decode(${'response'.$count}, true);
  31. $count++;
  32. }


ktory w pozniejszej petli wywoluje
  1. $thisCustomer = $jsonData[$number];


wszystko niby ok bo robi curla w tle i nie musze czekac az skonczy, bo mam akurat te petle w tabie na ktory norlamnie przechodze w kazdej chwili, problem polega na tym, ze mniej wiecej po 30-40 czaem 50 petlach - czasami robi dziurky i dalej np 70-90 petla jest ok i dalej null, wywala blad null, czyli podczas wywowalania jest komunikat:
  1. Notice: Trying to access array offset on value of type null in /home/shpaque/domains/todar.pl/private_html/templates/pages/adminCustomers.tpl on line 408
  2. (
  3. Notice: Trying to access array offset on value of type null in /home/shpaque/domains/todar.pl/private_html/templates/pages/adminCustomers.tpl on line 408
  4. )


linia 408 to to:
  1. <p class="text-left align-self-center" style="margin-bottom: 0; color: #fff !important;"><?php echo $thisCustomer['city']; ?> <small>(<?php echo $thisCustomer['region_name']; ?>)</small></p>





nospor
No ktorys z response albo nie zwrocil danych albo zwrocil zle dane i nie masz tam nic. To sprawdz czemu tamte response tak sie zachowaly. timeout moze?
LowiczakPL
jeśli operujesz na tablicach a nie jesteś pewien czy na 100% istnieją wszystkie indeksy to stosuj


  1. <p class="text-left align-self-center" style="margin-bottom: 0; color: #fff !important;"><?php echo !empty($thisCustomer['city']) questionmark.gif ''; ?> <small>(<?php echo !empty($thisCustomer['region_name']) questionmark.gif ''; ?>)</small></p>


jesli mie ma wartości to zwróci pusty string, a nie błąd jak w Twoim przypadku

ten znak questionmark.gif to dwa znaki ? tylko inteligentny system forum go podmienia
shpaque
tak rozumiem, tylko może lepiej zrobić tak jak nospor pisze, z timeoutem, tylko zstanawiam się jak to moze byc zrobione (bo podejrzewam ze tak dziala baselinker) zeby robil petle dalej dopiero jak pobierze dane z obecnej...

znacyz podejrzewam po prostu ze w momencie kiedy generowana jest petla tebeli ktora juz wyswietla wyniki, to curl jest na tej 30-40 pozycji pi pozniej generowanie tabeli z petli "wyprzedza" curla...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.