 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
gibi
Data înscrierii: 27/Iul/2007
Mesaje: 38
|
| Trimis: Vin Iul 27, 2007 10:42 am Titlul subiectului: Cum se comporta PHP5 cu 1 milion de fisiere intr-un director |
|
|
Am creat 1.000.000 de fisiere:
Cod:
<?php
ini_set ('max_execution_time', 3600);
$dir_name = "dir_test";
mkdir($dir_name, 0766);
$handle = fopen($dir_name . '/' . $dir_name . '.ext', 'w+');
fwrite($handle, $dir_name);
fclose($handle);
for ($i=0; $i<1000000; $i++)
{
copy($dir_name.'/'.$dir_name . '.ext', $dir_name.'/'.substr(md5(microtime()),0, 12) . '.ext');
}
?>
Am ales 10 fisiere din acest director si am verificat existentza lor cu file_exists:
Cod:
<?php
$dir = 'dir_test';
$a = array('c097e5a159a3.ext', 'c097fe538f93.ext', 'c09802efb99d.ext', 'c09816ef5751.ext', 'c098cadf1092.ext', 'c099322d8901.ext', 'c0998abb2433.ext', 'c099b0726f12.ext', 'c099bf10dc42.ext', 'c099fc3ab45f.ext');
foreach ($a as $key => $value)
{
if (file_exists($dir . '/' . $value)) {
echo $value . " exista \n";
}
}
?>
Timp scos de script:
Linux PHP 5.2.3-1ubuntu2: 0.000180 - 0.000230 secunde
Windows PHP Version 5.2.2 (xampp): 0.000537 - 0.000988 secunde
Inca un test doar in linux:
Cod:
<?php
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename:" . $file . "<br />";// : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
?>
Timp scos la citirea directorului plus afisare: 133.210 secunde
Pentru cei care erau curiosi in felul in care sa gestioneze datele intr-o aplicatie, sper sa fie de ajutor testul de mai sus. Concluzia o trageti singuri.
PS: rm -rf sau del *.* a durat un pic :) |
|
| Sus |
|
sparecod
Data înscrierii: 28/Iun/2007
Mesaje: 50
Locație: Targu-Mures
|
| Trimis: Vin Iul 27, 2007 10:46 am Titlul subiectului: |
|
|
| eu zic ca se comporta bine :) |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1763
Locație: Sibiu
|
| Trimis: Vin Iul 27, 2007 11:01 am Titlul subiectului: |
|
|
| point?... depinde si de arhitectura sistemului pe care il rulezi. Ia pune scriptu asta pe un 486 si vezi ce timp iti da... :P |
|
| Sus |
|
gibi
Data înscrierii: 27/Iul/2007
Mesaje: 38
|
| Trimis: Vin Iul 27, 2007 11:23 am Titlul subiectului: |
|
|
Ideea e ca muti programatori se complica in a gestiona unele fisiere in arbori de directoare cand nu este necesar acest lucru. Sa ziceam ca avem un site, si fiecare user are doar 1 imagine - putem sa punem linistiti toate imaginile userilor in acelasi director.
Daca avem peste 1 milion de useri, nu cred ca iti mai pui problema unde pui imaginile ci cui vinzi siteul :) |
|
| Sus |
|
valugi
Data înscrierii: 30/Dec/2004
Mesaje: 12
|
| Trimis: Joi Sep 13, 2007 9:29 pm Titlul subiectului: |
|
|
| In lumea reala nu se comporta asa bine. Si nu Php cat Apache-ul. Un om normal ar face un algoritm care la fiecare 10.000 de imagini sa zic, ar crea un alt director. De ex daca incepi cu directorul 0000 si termini cu 9999, ai 100.000.000 de fisiere deja aranjate mult mai usor in seturi de 10.000. Mult mai eficient si mai usor de accesat de catre orice server sau script. |
|
| Sus |
|
Pirahna
Data înscrierii: 22/Aug/2004
Mesaje: 4530
Locație: la birou
|
| Trimis: Joi Sep 13, 2007 10:09 pm Titlul subiectului: |
|
|
Citat: Ideea e ca muti programatori se complica in a gestiona unele fisiere in arbori de directoare cand nu este necesar acest lucru.
Multi "programatori" nu stiu sa afiseze un director.
Deci serios, lasa-i in pace ...
Prefer sa stiu ca un client o sa ma aleaga pe mine in locul unui idiot, decat sa invete idiotu sa gandeasca cum trebuie. :D |
|
| Sus |
|
gibi
Data înscrierii: 27/Iul/2007
Mesaje: 38
|
| Trimis: Vin Sep 14, 2007 2:33 pm Titlul subiectului: |
|
|
Citat: In lumea reala nu se comporta asa bine. Si nu Php cat Apache-ul.
Io in care lume am facut testul ?
Presupun ca la apache te referi ca nu duce atatea requesturi/secunda ca sa iti serveasca tie 1.000.000 de fisiere.... doh! si nu e nici php si nici apache ci viteza cu care citeste hard diskul. |
|
| Sus |
|
elrukn
Data înscrierii: 28/Iul/2007
Mesaje: 77
Locație: Bucuresti
|
| Trimis: Vin Sep 14, 2007 2:42 pm Titlul subiectului: |
|
|
| pune si tu configuratia sistemului pe care ai facut acest test te rog, sau da un PM daca vrei sa nu o vada toata lumea |
|
| Sus |
|
alopia
Data înscrierii: 02/Sep/2007
Mesaje: 35
|
| Trimis: Dum Sep 16, 2007 3:19 pm Titlul subiectului: |
|
|
Lumea reala este aia in care poti sa ai zeci sau sute de utilizatori rulind simultan acelasi script. Lumea reala este aia in care de multe ori nu ai un server dedicat iar capul hardisk-ului face balet printre cele un milion de fisiere ale tale si milioane de fisiere ale altor utilizatori. In lumea reala cind intinerezi printr-un milion de fisiere o faci pentru ca vrei sa le servesti cuiva. In lumea reala folosesti din cind in cind un file manager sau un client ftp care o sa incremeneasca nedumerit dind fata in fata cu atitea fisiere.
In lumea reala te vei trezi probabil cu un mail de la administrator "This account has been suspended for server load". :twisted: |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1763
Locație: Sibiu
|
| Trimis: Joi Oct 18, 2007 10:39 pm Titlul subiectului: |
|
|
alopia a scris: Lumea reala este aia in care poti sa ai zeci sau sute de utilizatori rulind simultan acelasi script. Lumea reala este aia in care de multe ori nu ai un server dedicat iar capul hardisk-ului face balet printre cele un milion de fisiere ale tale si milioane de fisiere ale altor utilizatori. In lumea reala cind intinerezi printr-un milion de fisiere o faci pentru ca vrei sa le servesti cuiva. In lumea reala folosesti din cind in cind un file manager sau un client ftp care o sa incremeneasca nedumerit dind fata in fata cu atitea fisiere.
In lumea reala te vei trezi probabil cu un mail de la administrator "This account has been suspended for server load". :twisted:
Lumea reala e aia in care daca ai un site cu 1.000.000 de vizitatori simultan ala ruleaza (in cel mai rau caz) pe un server dedicat. In cazul normal ruleaza pe o serie de mirror-uri. In lumea reala serverele nu sunt calculatoare ramase de la bunica pe care cutarica o trantit un linux si wow, are server. In lumea reala serverele su nt sisteme de calcul specializate si expres construite pentru a face fata load-ului si a numarului mare de request-uri. Asta in cazul in care e un server calumea, nu unul regasit in cazul amintit mai sus. Pentru cei ce nu stiu ce e aia un server in lumea reala, recomand documentarea in privinta unor termeni precum NCQ, branch-prediction, SVC etc. Astea sunt tehnologii pe care serverele din ziua de azi se bazeaza.
Si la final, in lumea reala astfel de discutii si mai ales astfel de argumente (aiurea adica) sunt in plus.
Parerea mea.
//Later edit:
P.S. lumea reala este aia in care verbul 'a intinera' (???) pe care il folosesti tu nu exista si probabil vroiai sa spui 'a itera'.
P.P.S. lumea reala este aia in care un client de ftp n-are nici in clin nici in maneca cu php-ul si cu apache.
P.P.P.S. :) lumea reala este aia in care faci comparatie intre performantele a doua sisteme de operare/placi video/whatever avand in rest exact aceeasi configuratie si operatie de efectuat (vezi o alta definitie: benchmark). Nu-mi spune ca ai doua calculatoare identice si pe unu ai rulat linux si pe celalalt windows. Nu-mi spune ca ai acelasi numar de fisiere si foldere in partitiile celor doua sisteme de oparare. Nu de alta, dar una e sa cauti un fisier intr-un fat de 1.500.000 de intrari si alta e sa il cauti intr-un fat de 1.050.000 de intrari. Deci nu mai compara cat poate vecinu cu dacia plina de saci cu cartofi comparativ cu cat poti tu cu ferarri.
Asta in cazul in care nu v-ati dat seama ce am vrut sa spun prin 'argumente aiurea'.
//Even later edit: ar trebi schimbat titlul topic-ului in 'lumea reala' :D |
|
| Sus |
|
alopia
Data înscrierii: 02/Sep/2007
Mesaje: 35
|
| Trimis: Sâm Noi 10, 2007 6:44 pm Titlul subiectului: |
|
|
mihaitha nu stiu despre ce "lume reala" vorbesti tu. Eu vorbesc despre conditiile in care sunt gazduite probabil 99% din site-urile romanesti adica pe un cont de hosting SHARED.
Vorbesc probabil despre si pentru majoritatea programatorilor prezenti aici. Care fac site-uri mijlocii, care nu sunt angajati la YouTube, Yahoo sau google si care-si gazduiesc siteurile in general pe conturi shared unde 500 de vizitatori ai lui si cu 400 ai vecinului si cu 100 ai lui x-ulescu se aduna.
Vorbesc de asemenea din postura de director de firma de hosting, programator la origine. Masinile mele sunt departe de "calculatoare ramase de la bunica" la care faci tu referinta iar infrastructura asemanatoare si celorlalte firme de pe piata romaneasca exceptind marii rechini gen RDS, ASTRAL etc. Am servere de firma de ultima generatie si cu toate astea ma vad uneori in situatia de a autoriza inchiderea unui cont din cauza ca utilizatorul uita de "lumea reala" in care traieste. Cea despre care vorbesc eu.
Ce vroiam sa atrag atentia vizavi de acest experiment este ca daca puteti optimiza ceva este bine sa o faceti! Oricit de bine si de repede vi se pare ca se misca computerul de acasa in teste nu uitati ca serverele chiar si multi-core de la firma de hosting isi impart resursele la sute de utilizatori cu scripturi care unele concureaza in fantezie si indiferenta cu care trateaza resursele...
Cit despre clientul ftp care "nu are nici in clin nici in mineca" cu mii de fisiere aia foloseste orice programator sau webdesigner zilnic cind are de a face cu siteuri-le clientilor. Te invit cu placere sa incarci vreo 100.000 de mi de poze intr-un director iar apoi sa contactezi disperat serviciul de suport de la firma de hosting ca ti se blocheaza programul FTP sau ai probleme cu FileManager-ul din CPANEL cind incerci sa le accesezi :wink: Lucru care personal l-am patit cu un client...
Asadar mihaitha lumea de care vorbesti tu cu mirror-uri si servere dedicate e "lumea ideala".
Ah as face aici o mica ierarhie a "lumilor" in care traiesc cei mai multi din programatorii romani:
1. Lumea de vis
Server/servere dedicate in data center pentru un singur site.
2. Lumea posibila
VPS alaturi de alte VPS uri pe server in data center pentru un site.
3. Lumea reala
Cont de hosting shared in data center pentru un singur site.
4. Lumea penibila
Hosting acasa pe server constructie proprie, dependent de conexiunile mediocre, dependent de cei de la RENEL sau de benzina din garaj asta daca sunteti fericitul posesor a unui generator de curent pe benzina :lol:
Welcome into the real world! |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1763
Locație: Sibiu
|
| Trimis: Dum Noi 11, 2007 12:16 pm Titlul subiectului: |
|
|
alopia a scris: mihaitha nu stiu despre ce "lume reala" vorbesti tu. Vorbesc de "lumea reala" in care un site cu 1000000 de vizitatori (idee pentru care s-a facut testul) unici (chiar si pe luna, ca pe zi ar fi prea mult iar simultani ar fi utopic) nu sta pe un hosting shared.
alopia a scris: Eu vorbesc despre conditiile in care sunt gazduite probabil 99% din site-urile romanesti adica pe un cont de hosting SHARED. Si cate din astea 99% din site-urile romanesti au asa un volum de utilizatori? Hai poate softpedia sau neogen sa sara de 1000000 pe luna. Realizezi ca ar trebui ca cel putin un roman din 23 sa intre pe site-ul ala.
alopia a scris: Cit despre clientul ftp care "nu are nici in clin nici in mineca" cu mii de fisiere aia foloseste orice programator sau webdesigner zilnic cind are de a face cu siteuri-le clientilor. Te invit cu placere sa incarci vreo 100.000 de mi de poze intr-un director iar apoi sa contactezi disperat serviciul de suport de la firma de hosting ca ti se blocheaza programul FTP sau ai probleme cu FileManager-ul din CPANEL cind incerci sa le accesezi Wink Lucru care personal l-am patit cu un client...
Nu-mi baga vorbe in gura. N-am spus ca un client de FTP n-are treaba cu mii de fisiere, citeste mai atent, am spus ca n-are treaba cu php-ul.
Confuzia pe care o faci si tu si gibi, si sunt sigur ca piranha va fi de acord cu mine, este ca numiti 'programator' pe ala care daca stie ca va trebui sa caute la un moment dat printr-un milion de fisiere nu si le ierarhizeaza, mai ales daca site-ul e pe shared hosting. Dragii mei, ala e programator la fel cum sunt eu popa si piry cantor. Revizuiti-va definitiile ca stati prost.
Ah, era sa uit:
alopia a scris: Asadar mihaitha lumea de care vorbesti tu cu mirror-uri si servere dedicate e "lumea ideala". Mai faci aici o confuzie. Nu stiu daca ai aflat, dar mai exista anumite suprafete de apa si uscat si dincolo de granitele Romaniei. Aia e lumea. Daca tu ai clienti idioti care nu sunt in stare sa estimeze daca le va pica site-ul din 5 in 5 minute din cauza load-ului, sau se zgarcesc ca fraierii, asta nu inseamna ca in toata lumea e la fel. |
|
| Sus |
|
Pirahna
Data înscrierii: 22/Aug/2004
Mesaje: 4530
Locație: la birou
|
| Trimis: Dum Noi 11, 2007 1:15 pm Titlul subiectului: |
|
|
Citat:
Vorbesc de asemenea din postura de director de firma de hosting, programator la origine. Masinile mele sunt departe de "calculatoare ramase de la bunica" la care faci tu referinta iar infrastructura asemanatoare si celorlalte firme de pe piata romaneasca exceptind marii rechini gen RDS, ASTRAL etc. Am servere de firma de ultima generatie si cu toate astea ma vad uneori in situatia de a autoriza inchiderea unui cont din cauza ca utilizatorul uita de "lumea reala" in care traieste. Cea despre care vorbesc eu.
Referitor la faptul ca esti director la o firma de hosting si ce ai mai scris mai sus ... pai e o firma de hosting romaneasca ?
Zici ca ai cele mai bune servere ... pai nu conteaza serverele, conteaza cum le folosesti impreuna astfel incat incarcarea sa fie cat mai mica / masina.
Pe calculatorul meu (o chestie de acum 6 ani, inca sub 1.6 GHz) nu dureaza foarte mult sa afisez 1 milion de fisiere, si nici sa caut in ele.
Nu e o treaba de cateva secunde, dar in vreo 2 minute se rezolva.
Depinde si de filesystem si de foarte multe chestii, deci doar ca nu stii tu cum sa faci un server sa nu moara de la milionul de fisiere, nu inseamna ca nu se poate face treaba.
Ia uita-te un pic la rackspace sau amazon ec2, te asigur ca ei o sa-ti zica "no problem".
Solutia pe un managed hosting pentru a lucra cu milionul de fisiere din acelasi folder e destul de simpla ... mirrors si citesti sectiuni din fiecare.
De pe serveru 1 iei prima suta de mii de fisiere, serveru 2 a doua suta de mii ... etc. Astfel ai 10 hard-disk-uri care impart sarcina.
Sa nu mai mentionez de sisteme de indexare si caching, pe care te simti obligat sa le folosesti ca sa reduci incarcarea unui server.
Daca ai un site mic, serveru nu trebuie sa fie mare rahat. Daca ai un site genul Yahoo!, deja se presupune ca ai o intreaga "flota" de clustere.
Deci inca vorbim de lumea reala.
Citat: si sunt sigur ca piranha va fi de acord cu mine
pirahna ! |
|
| Sus |
|
alopia
Data înscrierii: 02/Sep/2007
Mesaje: 35
|
| Trimis: Dum Noi 11, 2007 2:02 pm Titlul subiectului: |
|
|
Tot nu inteleg care-i contradictia ? :(
Eu repet ce a spus cu alte cuvinte si valugi: testul e inutil, trebuie sa fi nebun sa pui 1 milion de fisiere intr-un director cind poti foarte bine sa optimizezi totul ierarhizindu-le.
Voi va tot certati cu mine aruncindu-mi ca exemple toate minunatiile tehnice ale zilelor noastre care intre noi fie vorba toate costa bani. Multi bani. Iar in spatele oricarei solutie tehnice exista si niste ratiuni financiare care fac proiectul fezabil sau nu. "De pe serveru 1 iei prima suta de mii de fisiere, serveru 2 a doua suta de mii ... etc. Astfel ai 10 hard-disk-uri care impart sarcina. " = hai sa ne amuzam cu un calcul la Theplanet unde-i serverul phpromania 10 x 200$ serveru = 2000$/luna. Cam scumpa solutia asta hehehe. Keep it real 8)
Asadar cu ce nu sunteti de acord? Din punctul meu de vedere lucrurile sunt simple: Poti optimiza? Optimizeaza! Are vreun sens sa pui 1 milion de fisiere intr-un director ? Nu! E asta o aberatie in lumea reala? Da!
Din celelalte comentarii nu pot sa inteleg decit ca amindoi lucrati la Amazon sau Yahoo. Sau ca ati emigrat din Romania si programati prin USA :idea:
Unde intre noi fie vorba oamenii sunt extrem de pragmatici si s-ar putea sa sune ciudat mult mai preocupati de bani decit aici. Din experienta mea personala cu programatori din SUA am invatat ca mai degraba un roman investeste in tehnologie de care nu are nevoie decit un american. Ala o sa caute solutii cit mai simple si ieftine la problemele lui complicate.
Pur si simplu nu vad unde-i contradictia. Lumea reala de care vorbesc eu e cit se poate de reala si oricit ati invirti-o pe toate partile recunoasteti macar ca asta e lumea in care traim noi programatorii romani. Sa nu uitam ca asta e un forum romanesc nu forumul specialistilor de la google. Lumea de care vorbiti voi ramine una de vis prin comparatie.
Daca vreti neaparat sa vorbim despre milioane de fisiere din lumea aia de vis am sa va dau niste exemple care fac discutia inutila si din acest punct de vedere. Cind vine vorba de milioane de fisiere marile companii folosesc Lighttpd sau alte solutii mai bune decit serverul Apache, renunta la sistemele de fisiere clasice care daca au fost concepute pentru stocat milioane de fisiere in nici un caz nu au fost concepute pentru servit acele fisiere si apeleaza cum face Google sau YouTube sau alte supercompanii la baze de date enorme optimizate pentru a servi continut. Vorbesc aici cum am pomenit intr-un post anterior de sistemul BigTable de la Google, de Oracle - Real Application Cluster database sau despre IBM - DB2 Parallel Edition. Deci din start cind discutam de tandemul PHP-Apache facem referire la solutii tehnice ieftine adaptate siteurilor mici si mijloci. Nu la mastodontii de care vorbiti voi.
vezi :
http://www.phpromania.net/forum/viewtopic.php?t=5018&postdays=0&postorder=asc&start=15
Mai e o chestie care am sesiza-o in ultima vreme la programatorii de dupa 98: Indiferenta cu care trateaza resursele e la moda. Toata lumea e furata de fascinatia benckmark-urilor, de cit de repede se misca noile piese de hardware. Cine insa a inceput pe procesoarele Z86 sau x086 stie ca masinile se schimba dar softul ramine. Mandri ar trebui sa fie autorii Doom-ului sau Quake-ului care au lasat omeniri niste adevarate piese de arta in materie de programare care mergeau si pe cele mai exotice masini. Nu programerii din ziua de azi unde-ti incremeneste aplicatia daca nu ai un giga de ram...
Pe linga toate astea in loc de argumente logice ati inceput cu atacuri la persoana ... clasicul cautat greseli gramaticale in posturi sau imputat ca nu cunosc diversi alti termeni cum ar fi cel de programator :twisted:
Deci care e contradictia? |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1763
Locație: Sibiu
|
| Trimis: Lun Noi 12, 2007 9:51 am Titlul subiectului: |
|
|
1. Sorry, piry. typ-o :D
2. alopia, e prima oara cand afirmi ca testul e inutil. Deci cu alte cuvinte m-ai contrazis pana acum ca la final sa imi dai dreptate... Hai sa nu mai postam de dragul de a posta.
3. Intr-adevar, atat aici, cat si in occident, se iau in calcul niste considerente financiare. Insa acolo exista analisti (cu scoala) care pot estima daca cei 200 de dolari econimisiti in renuntarea la un mirror vor duce la 2000 de dolari pierduti in urma a doua ore de server down.
4. N-am lansat nici un atac la persoana. Nu m-am luat nici de greseli de gramatica (ceea ce nu am prea vazut sa faci), nici ca nu ai cunoaste termeni. Era o chestie de substrat, faptul ca denumesti 'programator' orice luzar care stie sa scrie 2 linii de cod php. Ala nu e programator, e un luzar care stie sa scrie doua linii de php. Ca sa fii programator trebuie sa ai o scoala in spate, si pe aia sa o fi facut calumea, nu sa fi trecut prin ea ca prin branza. Asta ma deranjeaza, ca sunt bagat in aceeasi oala cu genul acesta de oameni. |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|