Jump to content
php.lv forumi

Delfins

Reģistrētie lietotāji
  • Posts

    3,746
  • Joined

  • Last visited

Everything posted by Delfins

  1. sapratu kur kļūda nomaini šo : if ($i<$start) continue; if ($i>$end) break; ar šo $i = -1; while ( ... ) { $i++; if ($i<$start) continue; if ($i>$end) break; } beigās $i++ izdzēs
  2. da loogiski ka nolasiis no saaakuma, tapec ka tev ielikts ir $i = $start + 1; bet jaabut $i= 0;
  3. XML-RPC ... piemeers te... http://developer.apple.com/internet/webcon...le/example.html
  4. :) visi jau ar kaut ko sāk...
  5. tu kad kodē arī mēģini saprast ko dari ? parasti kodējot ir arī zemapziņā jānoimpretē kas notiks ko tu tur sarakstīji :) for ($i=$start; $i<$end; $i++ ) { $dir=opendir("pic/auto/"); while(($fails=readdir($dir)) !=false){ if ( !eregi('(jpg|jpeg)$',$fails) ) continue; if ($i<$start) continue; if ($i>$end) break;{ print("<img src=pic/auto/$fails width=120 height=81 border=1><b>$fails</b> ");} if(!($i % 3)) { echo "<br/><br/>"; } $i++; } aizstajam ar $dir=opendir("pic/auto/"); $i = 0; while(($fails=readdir($dir)) !=false){ if ( !eregi('(jpg|jpeg)$',$fails) ) continue; if ($i<$start) continue; if ($i>$end) break; print("<img src=pic/auto/$fails width=120 height=81 border=1><b>$fails</b> "); if( $i % 3 == 0 ) echo "<br/><br/>"; $i++; }
  6. tikmēr nesāksi pats domāt par konkrētas lietas realizēšanu tev nekad nekas neizdosies.
  7. 1.) nu tad noindeksējam un glabājam iekš DB. nekas jau nemainās... vienīgais ka tikai iegūsi, ka SQL-am var norādīt OFFSET ($start, $end) 2.) indeksējam _tikai_ bilžu skaitu. un tad $i = 0; while ( $file ... ) { // pārbaudes if ($i<$start) continue; if ($i>$end) break; print "... $file ..."; $i++; } PS: 2. nav optimālāks... bet ja nav DB...
  8. nu aptuveni taa... simple crap :)
  9. tas kas izvada bildes... indeksatoru taisi atsevišķā failā.. un saglabā images masīvu kā serializētu stringu (cerams tev tur nav daudz bildes) indexdir.php $dh = opendir($dir); while ( $file = readdir($dh) ... ) { .... $images[] = $file; } fwrite( fopen($dir.'/images.cache',w), serialize($images) ); images.php?page=xx $images = unserialize( file_get_contents($dir.'/images.cache') ); // .. tas pats kas iepriekšējā postā..
  10. nu visprastaakaa matemaatika $imagesCount = @ file_get_contents('images.count'); // labāk noindeksēt direktoriju un glabāt failā bilžu skaitu kā arī nosaukumus $page = (int) $_GET['page']; $perPage = 10; $pages = ceil( $imagesCount / $perPage ); if ($page<1 || $page>$pages) $page = 1; $start = $perPage * ( $page - 1 ); $end = ($start+$perPage<$imagesCount) ? $start+$perPage : $imagesCount-1; for ($i=$start; $i<$end; $i++ ) { // $img = $images[$i]['name']; ... } pages linkus domaju pats uztaisiisi
  11. if ( !eregi('(jpg|jpeg)$',$fails) ) continue; PS : par rindu skaitam nesapratu... tipa pa lappaspusēm ?
  12. nu a ja userim nav pieejami log-faili ? $fileName = sprintf( 'counter_%s.txt'", date('Ymd') );
  13. kliks (hits) - 1 refreshs hosts - 1 sessija apmeklējums uniq hosts - unikāls hosts pa periodu $cnt = @ (int) file_get_contents( 'counter.txt' ) + 1; fwrite( fopen('counter.txt','w'), $cnt );
  14. diff: -- for ($i = $end; $i>=($start-1); $i--) ++ for ($i = $end; $i>=$start; $i--)
  15. vai tiešam tu pats neredzi ? 10,9,8,7,6,5 = 6 elementi, bet tev vajag 5... nepareizi $start tiek aprēķināts PS: drausmīgs kods.. protams nav brīnums ka pats neko nevari atrast... (un droši vien arī citi :))
  16. pirmais example ir pat ljoti OK... tikai nav sub-menues es izmantoju sho... http://www.brainjar.com/
  17. un rezultāts ar fetch_assoc() Rows: 85794 DCs: 42439 SIDECARs: 644 MaxSM: 1095703 Time taken: 1.7660069465637 Līdz ar to "ranks" ir sekojošs (100k ieraksti) _row() (0) _assoc() (+100ms) _object() (+50ms) _array() (+200ms) PS: iekavās - nobīde no iepriekšējā
  18. lai nestrīdētos delfins@mandalay:~$ ./bench.php -- With Arrays -- Rows: 85794 DCs: 42439 SIDECARs: 644 MaxSM: 1095703 Time taken: 2.0215020179749 -- With Object -- Rows: 85794 DCs: 42439 SIDECARs: 644 MaxSM: 1095703 Time taken: 1.8180799484253 -- With Rows -- Rows: 85794 DCs: 42439 SIDECARs: 644 MaxSM: 1095703 Time taken: 1.6233339309692 Apgrieztaa seciibaa :) -- With Rows -- Rows: 85794 DCs: 42439 SIDECARs: 644 MaxSM: 1095703 Time taken: 1.6263220310211 -- With Object -- Rows: 85794 DCs: 42439 SIDECARs: 644 MaxSM: 1095703 Time taken: 1.821604013443 -- With Arrays -- Rows: 85794 DCs: 42439 SIDECARs: 644 MaxSM: 1095703 Time taken: 2.0186769962311 Kods ir sekojošs #### With ARRAYS ############################################### function doWithArrays($dbConn,$sql) { print "-- With Arrays --\n"; $res = mysql_query($sql,$dbConn); $dcCount = $sidecarsCount = $maxSM = $rows = 0; $startTime = getmicrotime(); while ( $row = mysql_fetch_array($res) ) { $rows++; if ($row['point_id']==1) $dcCount++; if ($row['sidecar']) $sidecarsCount++; $maxSM = max( $maxSM, $row['sm'] ); } $time = (getmicrotime()-$startTime); print "Rows: $rows DCs: $dcCount SIDECARs: $sidecarsCount MaxSM: $maxSM\n"; print "Time taken: $time\n"; mysql_free_result($res); } #### With ROWS ############################################### function doWithRows($dbConn,$sql) { print "-- With Rows --\n"; $res = mysql_query($sql,$dbConn); $dcCount = $sidecarsCount = $maxSM = $rows = 0; $startTime = getmicrotime(); while ( $row = mysql_fetch_row($res) ) { $rows++; if ($row[0]==1) $dcCount++; if ($row[2]) $sidecarsCount++; $maxSM = max( $maxSM, $row[1] ); } $time = (getmicrotime()-$startTime); print "Rows: $rows DCs: $dcCount SIDECARs: $sidecarsCount MaxSM: $maxSM\n"; print "Time taken: $time\n"; mysql_free_result($res); } #### With OBJECTS ############################################### function doWithObjects($dbConn,$sql) { print "-- With Object --\n"; $res = mysql_query($sql,$dbConn); if (!$res) die('Query failed'); $dcCount = $sidecarsCount = $maxSM = $rows = 0; $startTime = getmicrotime(); while ( $row = mysql_fetch_object($res) ) { $rows++; if ($row->point_id==1) $dcCount++; if ($row->sidecar) $sidecarsCount++; $maxSM = max( $maxSM, $row->sm ); } $time = (getmicrotime()-$startTime); print "Rows: $rows DCs: $dcCount SIDECARs: $sidecarsCount MaxSM: $maxSM\n"; print "Time taken: $time\n"; mysql_free_result($res); } $sql = "SELECT point_id, sm, sidecar FROM rimi_delivers_data"; Secinājums... ja vajag apstrādāt 100k ieraksti on-line, tad gan 200ms vinēt uz fetch_row() ir jēga (nezinu vai kāds vispār on-line fetcho 100k ierakstus :)) bet kaa jau minēju, $row->fieldName (no xxx_fetch_object() ) pieraksts gan stipri palielina koda lasāmību un uz maziem fetch-iem starpības jau nav... nedzīvojam takš Pentium-1 laikos...
  19. tāpēc ka mākslīgi un statiski. Ieliec kādu benchmark esošajam projektam vai vienkāršam alogritmam, kas kaut ko rēķina. domāju rezultāti stipri atškirsies (kā arī realizācija šad-tad) :)
  20. tieši par to i runa, ka pieliekot query-jā vienu kolonnu (sākumā vai vidū)... dabūsi pārkodēt visu kas dependojās :) tāpēc es ar "visiem 4-iem" par mysql_fetch_obj() PS: protams ja projektā ir tikai 2 tabulas ar vidēji 3 laukiem, tad šitās runas var uzskatīt par bezjēdzīgu laika tērēšanu.
  21. 1.) davai iegaumē 100 tabulas ar vidēji 20 kolonnaam - katru pozīciju un jēgu... Nu ?! ko teiksi... 2.) neaizmirsti to ka MYSQL ir fīča ka kolonnas var alter-ot pēc pozicijas... protams tas neko nemaina, ja tev ir SELECT field_list... 3.) pēc pieredzes saku (reportiem), ka ātruma pieaugumu nejūt - izmanto tu _obj() vai _array()
  22. interesanti, kad tev ir ~10 vertibas no SQL querija,.. un ja kaut kas pēkšņi pamainās... tev ērtāk griezties pie [x] ? vai pie $row->name / $row->count ?? turklāt ja padod mainīgo citai funkcijai (ko es parasti daru)... man nav jāzin indekss kolonnai, bet gan tās nosaukumu :) [ērtumu jūti?]
  23. vari panjemt HTML manuali un ar kādu rīku uztaisit pats savu CHM.. PS: ar on-line (+search) manuāli nepietiek ? (+google protams :))
  24. 1.) ja tu nolasi kādus 100 ierakstus, nav nozīmes kādu tu funkc. pielieto. es visu laiku izmantoju mysql_fetch_obj() 2.) ar ko PDF nepatīk ?
×
×
  • Create New...