[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