[dev] [commit] r938 - phplib/models
Radu Borza
radu_borza at yahoo.it
Mon Aug 19 16:40:01 EEST 2013
Cred că e mult mai elegant să folosim parse_url
(http://php.net/manual/en/function.parse-url.php)
> Nu prea mi-e clar ce e cu 3 și cu 8. :-) Dacă înțeleg bine,
>
> - substring_index(url, '/', 3) selectează până la al treilea slash,
> adică protocolul, domeniul și posibil portul
> - substring(..., 8) extrage domeniul și posibil portul.
>
> Codul ăsta e ok pentru folosirea limitată de acum, dar, dacă într-o zi
> vom crawla un site cu https, va trebui pus 9 în loc de 8. Într-o zi va
> crăpa și ne vom scărpina în cap cu orele neștiind de ce. Dacă vom
> crawla un site pe alt port decât 80, "domeniul" va include :8000 sau
> :8080, nu se știe cu ce efecte. Nu știu nici cât de rapid va fi codul
> ăsta când vom avea zeci de mii de pagini, vedem.
>
> Hai să facem așa, o combinație de reparat chestiile ușor de reparat și
> un // TODO cu reparații pentru viitor:
>
> - în loc de substring(..., 8), folosește tot substring_index(..., -2).
> Dacă am citit bine specificația, asta returnează tot după ://, deci
> merge natural și pentru https.
> - înainte de query, adaugă un "// TODO extract domain name for every
> URL in separate field". Asta ar fi soluția cea mai elegantă, pentru că
> o poți face în PHP cu parse_url sau cu o bibliotecă dedicată.
>
> Cătălin
>
>
> On 2013-08-18 23:09, automailer at dexonline.ro wrote:
>> Author: alinu
>> Date: Sun Aug 18 23:09:45 2013
>> New Revision: 938
>>
>> Log:
>>
>>
>> Modified:
>> phplib/models/CrawledPage.php
>>
>> Modified: phplib/models/CrawledPage.php
>> ==============================================================================
>>
>> --- phplib/models/CrawledPage.php Sun Aug 18 22:48:13 2013 (r937)
>> +++ phplib/models/CrawledPage.php Sun Aug 18 23:09:45 2013 (r938)
>> @@ -32,7 +32,9 @@
>> //intoarce o lista cu domeniile parsate
>> public static function getListOfDomains() {
>>
>> - return Model::factory(self::$_table)->raw_query("select id,
>> substr(substring_index(url, '/', 3),8) as domain from CrawledPage
>> group by domain order by id asc;")->find_many();
>> + //return Model::factory(self::$_table)->raw_query("select id,
>> substr(substring_index(url, '/', 3),8) as domain from CrawledPage
>> group by domain order by id asc;")->find_many();
>> + return Model::factory(self::$_table)->raw_query("select id,
>> domain from
>> + (select id, substr(substring_index(url, '/', 3),8) as
>> domain from
>> CrawledPage order by id desc) alias1 group by domain order by id
>> asc;")->find_many();
>> }
>>
>>
>> _______________________________________________
>> Dev mailing list
>> Dev at dexonline.ro
>> http://list.dexonline.ro/listinfo/dev
> _______________________________________________
> Dev mailing list
> Dev at dexonline.ro
> http://list.dexonline.ro/listinfo/dev
More information about the Dev
mailing list