[dev] [commit] r938 - phplib/models
Cătălin Frâncu
cata at francu.com
Mon Aug 19 10:28:37 EEST 2013
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
More information about the Dev
mailing list