Autor Zpráva
cistax
Profil
Dobrý den, psal jsem sem nedávno, a resil jsem problem jak zjistit zdroj stranky, pro indexovacího bota, ted jsem jiz bota temer dodelal, ale mam problem. Do db vkladam adresy jednu za druhou a mam jich tam uz asi 50 000. To muze mit vliv na rychlost bota. Tak jsem se rozhodl, ze ho nejak omezim(muzete videt ve fci browse(); jako cyklus for. Nejak to ale nefunguje. Nevíte jak by to mohlo být správně? Mimoto, pokud se tu najde nekdo, kdo bych chtel se mnou na tom botovi spolupracovat, necht me kontaktuje na icq: 483-104-828.

Kód:
function getURL($adresa){
 $source = file_get_contents($adresa);
 preg_match_all('#<a[^>]+href="(http:\/\/([^"]+))"[^>]*>#is',$source,$array);
 foreach($array[1] as $adresa){
 $sel = "select * from adresy where adresa ='{$adresa}'";
 $qsel = mysql_query($sel);$fetch=mysql_fetch_array($qsel);
 if(!empty($fetch)){continue;}
 $adresa = htmlspecialchars($adresa, ENT_QUOTES);
 $ins = "insert into adresy(adresa) values('$adresa')";
 $q = mysql_query($ins);
 }
}
function browse(){
for($id=1;$id<=2;$id++){  //toto je ten muj nefunkcni regulator
$select = "select * from adresy limit ".$id;
$query = mysql_query($select);
while($row=mysql_fetch_array($query)){
getURL($row["adresa"]);
}
}
}
browse(); // tady volám fci
tiso
Profil
Otázka znie ako to chceš obmedziť? Popíš ako si to predstavuješ.
Nox
Profil
Možná v tom, že za "limit" nemáš mezeru
cistax
Profil
ano, nemam, tu tam dodelam,
tiso: chci to omezit, aby to proslo treba jen prvni ctyri adresy z db.
tiso
Profil
cistax - ale v tom prípade sa k ďalším nedostaneš... Takže napíš aspoň 5 viet o tom ako sa to má správať.
Nox
Profil
cistax
Proč tam vůbec máš cyklus? Přijde mi to sestavené dost nesmyslně...první iterace ti vrátí 1 záznam, další 2 (celkem 3 ale jeden 2x), další 3 (jeden 3x, jeden 2x a další nový)
Takže oddělej úplně ten cyklus for...a jinak by to snad mělo fungovat, ne?
cistax
Profil
ano funguje to stoprocentne, Jak rikal tiso, rozepisu se.

Takze chci, abych mel jednoduchou podminku, cyklus ci cokoliv jineho, kde bych zadal cislo, kolik chci zaznamu z db vybrat. Mam internet omezeny na stazeni 2Gb/mesic, coz je dost malo,a tak si nemohu dovolit moc experimentovat, proto jsem se obratil sem.

EDIT: kdyz oddelam for, zase se budou vybirat z db vsechny adresy, bez limitu, takze se to musi nejak nahradit
tiso
Profil
cistax - ten for cyklus je tam zbytočný, ako písal Nox
Pokiaľ to chceš iba dočasne omedziť, kým to testuješ, tak ti stačí len do toho SQL selektu (riadok 15) dopísať natvrdo ten limit, nezaškodilo by výsledky aj podľa niečoho radiť.
$select = "select * from adresy limit 10";//sem si dosadis limit

Pokiaľ chceš univerzálne riešenie, tak by si mal do funcie browse() doplniť 2 nepovinné parametre $from a $limit ktorým by si modifikoval ten SQL selekt

Máš tam pár návrhových chýb, celé by som to robil inak...
cistax
Profil
nechci aby, to vyznelo drze, ale
Máš tam pár návrhových chýb, celé by som to robil inak...
Nechtel bys ukázat jak?:-)

Díky, ja se ve fcich moc nevyznam jeste, takze si nejsem jisty, ale urcite to zkusim.
BTW: protoze se mi casto stava ze mi otec sedne k pocitaci, celeho bota jsem smolil na papir bez moznosti testu. Takze se za ty konstrukcni chyby omlouvam.:-)
tiso
Profil
Nechtel bys ukázat jak?:-)
Čo by som z toho mal?
cistax
Profil
Nj, mas pravdu no.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0