Autor | Zpráva | ||
---|---|---|---|
cistax Profil |
#1 · Zasláno: 4. 7. 2009, 15:59:10 · Upravil/a: cistax
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 |
#2 · Zasláno: 4. 7. 2009, 16:13:17
Otázka znie ako to chceš obmedziť? Popíš ako si to predstavuješ.
|
||
Nox Profil |
#3 · Zasláno: 4. 7. 2009, 16:15:19
Možná v tom, že za "limit" nemáš mezeru
|
||
cistax Profil |
#4 · Zasláno: 4. 7. 2009, 16:18:32
ano, nemam, tu tam dodelam,
tiso: chci to omezit, aby to proslo treba jen prvni ctyri adresy z db. |
||
tiso Profil |
#5 · Zasláno: 4. 7. 2009, 16:24:37
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 |
#6 · Zasláno: 4. 7. 2009, 16:31:42
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 |
#7 · Zasláno: 4. 7. 2009, 16:52:59 · Upravil/a: cistax
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 |
#8 · Zasláno: 4. 7. 2009, 17:07:36 · Upravil/a: tiso
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 |
#9 · Zasláno: 4. 7. 2009, 17:11:44
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 |
#10 · Zasláno: 4. 7. 2009, 17:19:34
„Nechtel bys ukázat jak?:-)“
Čo by som z toho mal? |
||
cistax Profil |
#11 · Zasláno: 4. 7. 2009, 17:20:14
Nj, mas pravdu no.
|
||
Časová prodleva: 15 let
|
0