Jump to content
php.lv forumi

darba sadaļas offtopiks


Robis

Recommended Posts

  • Replies 357
  • Created
  • Last Reply

Top Posters In This Topic

  • 3 weeks later...

Pārvietots no http://php.lv/f/index.php?showtopic=8812

 

Web crawleri jātaisa PHP ???????????????

Man liekas, ka PHP nebūs tā labākā vide priekš šāda uzdevuma.

Varbūt vari pastāstīt ko specifiskāku, kāpēc būtu jāizmanto PHP?

 

Kautvai, ja paskatamies tavā wiki linkā doto shematisko crawlera attēlojumu:

WebCrawlerArchitecture.png

 

Kā lai uztaisa Multi-threaded downloader ar PHP.

Edited by bubu
Link to comment
Share on other sites

Kāpēc gan nē?... PHP var arī nokompilēt. būs tas pats vien binarniks. Un ja crawlošana nav tik ietilpīga, tad PHP ir ok.

PHP tādā ziņā ir elastīga vide, kur crawlerus ļoti ērti būvēt... C++ šitā te stringu/buferu/net-konekciju padarīšana ir ķēpīga (ja neizmanto FW) un neaizņems 2-3 mēneši (ja raksto N-tos pluginus katram saitam)

 

Mikijs, kādi vēl piemēri!? Iemācies vispirms lasīt - "Ir jāizveido robots"

Link to comment
Share on other sites

Galvenās ar PHP saistītās izpriecas būs "multithreading". Ja zirneklim būs tikai viens pavediens, tad ātrdarbība būs graujoši slikta. Protams, daudz ir atkarīgs no tā, kāda ātrdarbība ir pieņemama, un tieši kāds saturs tiks "zirnekļots".

Link to comment
Share on other sites

No Paulinja linka

 

Short of writing your app in C or C++, compiling it native and hooking directly into the web server or something, you’re not really going to get much faster.

 

Nedomāju ka tā ir taisnība. Šijā gadījumā esmu gandrīz pārliecināts, ka c++ taisīts crawleris strādās reizes 10 ātrāk par PHP taisītu crawleri, bet tas protams ir tikai mans viedoklis.

 

Bet, ja apjomi nav lieli, tad protams var arī mēģināt sastiķēt crawleri uz PHP.

Es vienkārši domāju, ka pašam crawlerim ir principā tikai dažas funkcijas, tāpēc to uzkodēt C++ būs tikai nedaudz sarežģītāk par PHP, bet performances ieguvums būs krietni lielāks, protams, ja tas nepieciešams.

Link to comment
Share on other sites

betons: kas visilgākā operācija, ko crawlerim būtu jādara? imho datu pieprasīšana un gaidīšana no interneta. Nu varbūt atkarībā no vajadzīgās datu apstrādes arī datu analizēšana un parsēšana.

Kā gan C++ vai PHP izvēle ietekmēs download/upload ātrumu? Atbilde - nekā.

Un C++'ā parsēt lielus stringa gabalus arī nav prātīgi - neiegūsi īpaši lielāku ātrdarbību.

Tātad tā vietā, lai developētu C++'ā ar tā lēno developēšanas/testēšanas laiku, vai nebūtu prātīgāk uzprogrammēt ātri php (vai jebkurā skriptošanas valodā, piemēram Python, vai tikpat labi Javā vai C#'ā) un iegūtu laiku veltīt optimizācijai? Developera laiks ir dārgs. Vajag prātīgi to tērēt (t.i. kompilēšanai vai optimizēšanai).

 

Pats kādu laiku atpakaļ rakstīju vienu RSS savācēju un webisku pārskatīšanu tam. Visa webiskā daļa bija php, bet pats rss fīdu savācējs un datubāzē stūmējs bija Python'ā (jo php ir pašvaki ar multithreadingu). Un nekādu C++ nevajadzēja. Ātrdarbība bija vairāk kā pietiekoša (precīzus skaitļus diemžēl vairs neatceros).

Link to comment
Share on other sites

betons: kas visilgākā operācija, ko crawlerim būtu jādara? imho datu pieprasīšana un gaidīšana no interneta. Nu varbūt atkarībā no vajadzīgās datu apstrādes arī datu analizēšana un parsēšana.

Kā gan C++ vai PHP izvēle ietekmēs download/upload ātrumu? Atbilde - nekā.

Un C++'ā parsēt lielus stringa gabalus arī nav prātīgi - neiegūsi īpaši lielāku ātrdarbību.

 

Tas protams atkarīgs no tā kāda informācija jāsavāc no crawlētajām lapām. Ja jāsavāc tikai linku koks vai vēl kāds salīdzinoši niecīgs info gabals, tad varbūt arī pārsēšana būs salīdzināma ar download laikiem, bet ja pārsēšana un analīze ir pietiekami sarežģītas (sarežģītas laikā), tad pārsēšanas un analīzes laiks var būt daudz lielāks par download laiku.

Un, ja noteicošais būs pārsēšanas un analīzes laikis, tad manuprāt, kā jau teicu C++ būs vismaz reizes 10 ātrāks.

 

 

==================

 

Varbūt kāds šai sakarā grib uztaisīt tīri tādu eksperimentālu salīdzināšanu piemēram ar qsort 1 000 000 skaitļiem.

c++ izmantot STL qsortu

PHP tīru php realizāciju.

Edited by betons
Link to comment
Share on other sites

C++ un PHP izsauks vienus un tos pašus pregus.. (pat iespējams no vienādiem open-source libiem)... kāda tur 10x starpība...

Cita lieta, ja tu downloado XML un pārsē viņu pats.

 

Uztaisi, lūdzu, piemēru, kur tavs c++ būs 10x ātrāks par php (Source: web, Dest: txt fails)

 

ar qsort 1 000 000 skaitļiem

Manuprāt tas nebūs īsti crawlera uzdevums - ieliks bāzē un smuki sasortēs.

Edited by Delfins
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...