Jump to content
gafi

[PHP][AJUTOR] Am nevoie de ajutor

Recommended Posts

Posted

Salutare, am nevoie de sfatului unui programator.

Lucrez la un script ce parseaza mai multe linkuri pentru a extrage emailuri, in jur de 30,000 de linkuri pe zi. Problema mea este ca dureaza in jur de 1-2 secunde (uneori si mai putin, depinde cat de bine se misca proxiul) pentru fiecare link sa il incarece si sa il parseze, iar pentru a parsa toate linkurile dureaza undeva la 7-8 ore poate si mai bine. Am incercat sa rulez acelasi fisier in mai multe taburi, insa fara success, atunci cand apelezi un fisier in mai multe taburi, trebuie sa incarce in primul tab apoi trece la tabul 2. Nu este o solutie tocmai buna.

Daca aveti voi solutii sau ideei, sunt bine venite. Ma gandeam sa apelez de mai multe ori fisierul cu exec.

Multumesc anticipat ;)

Posted (edited)
Cu CronJobs.

Nu stiu cat este de bine. Hai sa explic altfel, la ce m-am gandit eu. Am un fisier, links.txt (30k linkuri), un fisier extract.php unde folosesc curl (cu proxies) pentru a intra pe cate un link in parte, extrag adresa de email apoi refresh la fisier pentru a extrage adresa de email din urmatorul link.

M-am gandit asa, sa fac un fisier main_extract.php unde folosesc functia exec() si apelez extract.php de 10 ori, una sub alta. Asta mi-a venit intre timp in cap, insa nu o mai pun in practica pentru ca sunt prea obosit, o sa incerc maine dimineata. Alte idei mai aveti?

Sunt deschis la orice idee, chiar daca trebuie sa schimb structura scriptului. Ideea este sa extrag cat mai repede emailurile din acele linkuri. Vreau o solutie pentru a incarca 40 de linkuri in acelasi timp, nu unul cate unul.

Edited by gafi
Posted

Sunt o gramada de varianta, merge si cu cronjobs si cu loop-uri in bash, in batch.

run multiple instance of same php script from bash - Server Fault

asynchronous - What is the best way to run a PHP script multiple times asynchronously in windows? - Stack Overflow

Running multiple instances of a PHP file from bash and APPEND result to file? - Stack Overflow

Ar trebui sa pui un paramaetru get, sa fie ceva de genul extract.php?line=235 ca sa stie scriptul de unde sa porneasca, iar intr-un fisier text iti poti salva liniile unde ai ramas sau ce te intereseaza pe tine. Deci ai putea ca prima instanta sa se executa de la linia 1-1000, a doua instanta de la 1000-2000 si tot asa.

Posted

<?php
// 200 threads
foreach(array_chunk($links, count($links)/200) as $threadChunk){
if(!pcntl_fork()){
// aici parsezi $threadChunk si le verifici
exit;
}
}

while (pcntl_waitpid(0, $status) != -1) {
$status = pcntl_wexitstatus($status);
}

  • Upvote 1
Posted

Multumesc pentru raspunsuri baieti, am incercat variantele voastre insa am gasit una care se potriveste la fix:

curl_multi_init

Se poate inchide threadul

Posted
probabil e tarziu dar un script de bash care sa iti porneasca curl-ul in screen cred c ar fi cea mai simpla solutie

Da, este o solutie pentru a rula un script php de mai multe ori, dar pentru a prelua contentul din mai multe linkuri, curl_multi_init este solutia ideala. Eu am pus-o deja in practica si scanez cate 100 de linkuri fara probleme, in cateva secunde.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...