Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Curl i petla
Forum PHP.pl > Forum > PHP
Gribo
Witam mam nastepujacy problem :

Próbuje napisać skrypt który będzie wysyłać na moich kilka blogów artykuły poprzez curl.
Wszystko niby działa pięknie dla jednej strony ale gdy zapuszczę to w pętli zęby dodawało do kilku stron, których adresy pobieram z pliku, skrypt wysyła tylko do ostatniej strony z listy a resztę jakby pomijał z listy exclamation.gif

O co może chodzić questionmark.gif oto kawałek kodu

  1.  
  2. $file = file(FILE_NAME);
  3. foreach ($file as $url) {
  4. $status = wyslij_art($url);
  5. }
  6.  
  7. function wyslij_art($u) {
  8.  
  9.  
  10. $adres = $u.'/nowywpis.php';
  11. $pageContent = getPage($adres); //pobieram strone tworze sesje
  12. $post = 'jakis artukuł';
  13. $siteContent = postForm($adres,$post,$proxy); // wysylam form
  14.  
  15. return ($status===false) ? false : true;
  16. }
  17.  



to w zasadzi wszystko oczywiście usunąłem zbędny kod by nie zaśmiecać. Co ciekawe jak napisze coś takiego :

  1.  
  2. $file = file(FILE_NAME);
  3. // foreach ($file as $url) {
  4. $status = wyslij_art($url);
  5. $status = wyslij_art($url2);
  6. $status = wyslij_art($url3);
  7.  
  8. // }
  9.  
  10.  


To wszystko wysyła się prawidłowo na 3 adresy.
wookieb
Sprawdź co zawieraja tablica odczytana z pliku. No i co odbiera CURL (czego nie byłeś łaskawy w żaden sposób pokazać)
Gribo
no to proszę prawie cały kod :

  1. $file = file(FILE_NAME);
  2. foreach ($file as $url) {
  3.  
  4. $status = wyslij_art($url);
  5.  
  6. }
  7.  
  8. function wyslij_art($u) {
  9. $adres = $u.'/nowywpis.php';
  10. $pageContent = getPage($adres); //pobieram strone tworze sesje
  11. $post = '?art=jakis artukuł';
  12. $proxy = '231.11.11.3:80';
  13. $siteContent = postForm($adres,$post,$proxy); // wysylam form
  14. $status = strpos($siteContent,'Wpis dodany');
  15. return ($status===false) ? false : true;
  16. }
  17.  
  18. function getPage($url,$session = false) {
  19. $curl=curl_init("$url");
  20. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  21. curl_setopt($curl, CURLOPT_TIMEOUT, 10);
  22. curl_setopt($curl, CURLOPT_COOKIESESSION, $session);
  23. curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies/cookie.txt');
  24. curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies/cookie.txt');
  25. $content=curl_exec($curl);
  26. curl_close($curl);
  27. return $content;
  28. }
  29.  
  30. function postForm($url,$post,$proxy = '',$session = false) {
  31. $curl=curl_init("$url");
  32. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  33. curl_setopt($curl, CURLOPT_TIMEOUT, 10);
  34. curl_setopt($curl, CURLOPT_PROXY, $proxy);
  35. curl_setopt($curl, CURLOPT_POST, true);
  36. curl_setopt($curl, CURLOPT_POSTFIELDS, createPostString($post));
  37. curl_setopt($curl, CURLOPT_COOKIESESSION, $session);
  38. curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies/cookie.txt');
  39. curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies/cookie.txt');
  40. $content=curl_exec($curl);
  41. curl_close($curl);
  42. return $content;
  43. }



tablica odczytana z pliku oczywiście jest prawidłowa zawiera adresy stron w formacie 'http://jakisadres.pl'
wookieb
No to teraz sprawdź jakie masz odpowiedzi dla każdego z adresów oraz jaki urle są obrabiane.
Na przyszłość, powiem że takie rzeczy robi się w SOAP-ie
Gribo
przecież nie napisał bym na forum zanim samemu nie zdebagował bym kodu, wiec twoje rady o sprawdzaniu odpowiedzi są co najmniej nie na miejscu


napisałem dlatego bo tak jak wspominałem w 1 poście skrypt wykonuje się tylko dla ostatniego adresu a z innych nie ma odpowiedzi.mimo ze adresy wchodzą dobre
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.