cUrl redirect dupa ce sursa e downloadata complet

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator


MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde MarPlo » Sâm Dec 12, 2015 2:52 pm

Cursuri gratuite: | | | |

evolution
Average Member
Mesaje: 118
Membru din: Lun Noi 06, 2006 8:04 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde evolution » Dum Dec 13, 2015 8:50 am


MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde MarPlo » Dum Dec 13, 2015 10:49 am

Cursuri gratuite: | | | |

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde nevvermind » Dum Dec 13, 2015 5:50 pm

Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

evolution
Average Member
Mesaje: 118
Membru din: Lun Noi 06, 2006 8:04 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde evolution » Dum Dec 13, 2015 7:25 pm

@nevermind, vreau sa monitorizez niste preturi. Fyi, daca vrei sa copiezi content, sa stii ca google detecteaza continutul duplicat si te penalizeaza.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde nevvermind » Dum Dec 13, 2015 9:41 pm

Nu ma refeream la continut in sensul ala, ci la ORICE de pe site, fie ca-i o pagina intreaga, fie ca-i doar un span.

Cand faci curl-uri din alea, le incarci lor serverele, omu. Daca vei face nush ce gafa in codul tau PHP si curl-ul o sa faca loop infinit catre acel site, ia ghici. Asta-i DDoS involuntar. Si mi-e sa nu-ti bata la usa dup-aia.
De asta, deseori, e-o treaba cam ilegitima crawling-ul. Cel putin imorala, ya with me?

Tu tre sa iei informatiile alea
a) ori cu acordul lor, avand requesturi limitate pe o perioada de timp
b) ori prin API expus de ei

Oricum, n-ai raspuns de ce ti se incarca memoria cu o simpla iteratie.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

evolution
Average Member
Mesaje: 118
Membru din: Lun Noi 06, 2006 8:04 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde evolution » Lun Dec 14, 2015 4:07 pm

Da, voi cauta si apela la API. Oricum scriptul imi trebuie si la preluarea periodica a unor fisiere xml puse la dispozitie de catre un site, sa il pun pe cron in loc sa ruleze prin browser.

Inca mai lucrez, incerc sa combin cele 2 raspunsuri, solutia cu foreach e buna, dar imi trebuie set_time_limit(0) pe server, cea cu header redirect nu cred ca necesita. Multumesc.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde nevvermind » Lun Dec 14, 2015 4:28 pm

Orice script rulat in CLI (cand rulezi cron-ul, de ex.), e 0 oricum: http://php.net/manual/en/info.configura ... ution-time
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

evolution
Average Member
Mesaje: 118
Membru din: Lun Noi 06, 2006 8:04 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde evolution » Mar Dec 15, 2015 3:19 pm


nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde nevvermind » Mar Dec 15, 2015 5:53 pm

- asigura-te ca erorile, daca nu sunt afisate, macar bagate in log: http://stackoverflow.com/a/21429652; faptul ca-ti da 500 si nu ai nimic in loguri inseamna ca nu ai setarile bune pt log de erori; verifica-le
- scoate sleep(); nu-ti trebuie. mai si astepti degeaba...
- scoate din iteratie tot ce nu e specific ei; adica pastreaza numai curl_setopt($ch, CURLOPT_URL,$url);, exec() si getinfo()
- tu mereu presupui ca requestul curl nu va avea eroare: $content = curl_exec($ch); if ($content === false) { echo curl_error($ch); }
- tre sa tii cont de faptul ca unele URL sunt redirectari, pe care curl-ul le poate urma. altfel, vei primi coduri response ca 301 si 302, care sunt valide, dar tie or sa-ti scape: curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- codul ala nush unde face "memory leak"; nu stiu ce anume iti incarca memoria; afla macar daca se intampla asta, punand la sfarsitul iteratiei echo memory_get_peak_usage(false);

Sau intra pe chat, poate-i cineva acolo sa te ajute. Intru si eu.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

evolution
Average Member
Mesaje: 118
Membru din: Lun Noi 06, 2006 8:04 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde evolution » Mie Dec 16, 2015 11:36 am

- sleep() trebuie, ca sa nu suprasolicit serverul unde fac request sa sa fiu banat de firewall.
- am pus memory_get_peak_usage, nu stiam de functie, imi arata circa 1mb pentru fiecare loop, la final la fel, deci cred ca e ok.


Am observat urmatoarele:
- cand rulez scriptul in browser si apas Stop in browser, de fapt scriptul continua sa mearga in background si se updateaza db. Ca sa il opresc ar trebui de fapt sa ii pun un exit() sau die() in script.
- cand imi apare in browser "500 Server Internal Error", pe la 10% dupa ce a rulat, de fapt scriptul continua sa mearga in background si se updateaza db, deci scriptul de fapt merge pana la capat. Am cautat in logurile Apache si imi apare o eroare 404 (imi arata semnul - in loc de vreun url), dar nu stiu de ce pt ca toate url-urile sunt valide.
- daca e 404 am pus comanda continue (am inteles ca sare loopul respectiv din foreach, desi mai intuitive era sa se cheme skip)

Acum l-am pus pe cron, ar trebui ca outputul sa imi vina pe mail dupa ce se termina de rulat.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: cUrl redirect dupa ce sursa e downloadata complet

Mesajde nevvermind » Joi Dec 17, 2015 2:41 pm

Ai timeout la server, in Apache. Ii atingi limita serverului, nu PHP-ului, si trimite un raspuns, indiferent daca a terminat sau nu php-ul. Tre sa folosesti un fel de batch processing cu ajax sa eviti asta.
Dar asta necesita putina organizare din partea-ti.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 20 vizitatori