| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
gibi
Data înscrierii: 27/Iul/2007
Mesaje: 38
|
| Trimis: Joi Noi 22, 2007 11:36 pm Titlul subiectului: Cache fisier php in memorie |
|
|
Salut,
Sa zicem ca avem un site cu foarte multe request-uri simultane. Scripturile php accesate nu sunt multe, dar se folosesc aproximativ 5 include (sau require) pentru generarea inei pagini.
Pentru a spori performantza, cum se poate face cache la scripturi in memorie?
Ar fi util daca as crea un drive virtual in memorie in care sa pun scripturile php si sa le execut de acolo ? |
|
| Sus |
|
Pirahna
Data înscrierii: 22/Aug/2004
Mesaje: 4355
Locație: la birou
|
| Trimis: Joi Noi 22, 2007 11:51 pm Titlul subiectului: |
|
|
depinde ...
Oricum request-uri simultane nu au cum sa existe decat la procesoare dual-core, si chiar si acolo exista un queue ...
Sunt puse intr-o ordine si luate pe rand (foarte foarte foarte (....) foarte rapid), si rezolvarea unui request dureaza foarte foarte foarte foarte putin.
Uita-te pe php.net si cauta memory, erau niste chestii de caching si acolo ...
EDIT: mmm? |
|
| Sus |
|
flubber
Data înscrierii: 14/Mar/2006
Mesaje: 237
Locație: Bucuresti
|
| Trimis: Vin Noi 23, 2007 5:11 pm Titlul subiectului: |
|
|
de ce nu faci cache la contentul pe care il transmiti/generezi ( html, poza, etc); transmiti headerele care trebuie si ai terminat; oricum, executia unui script php nu dureaza (sau nu ar trebuie sa dureze ) foarte mult, resursele sunt distruse la terminarea scriptului
cauta despre cache, headere http |
|
| Sus |
|
Quber
Data înscrierii: 27/Iun/2006
Mesaje: 791
Locație: localhost
|
| Trimis: Vin Noi 23, 2007 5:32 pm Titlul subiectului: |
|
|
| Uite aici poate te ajuta ceva |
|
| Sus |
|
redcom
Data înscrierii: 27/Mai/2004
Mesaje: 114
Locație: iasi
|
| Trimis: Vin Noi 23, 2007 6:03 pm Titlul subiectului: |
|
|
| cred ca te ajuta foarte mult turkcache la fel daca compilezi binar acele php-uri |
|
| Sus |
|
gibi
Data înscrierii: 27/Iul/2007
Mesaje: 38
|
| Trimis: Lun Noi 26, 2007 10:37 am Titlul subiectului: |
|
|
Citat: de ce nu faci cache la contentul pe care il transmiti/generezi ( html, poza, etc); transmiti headerele care trebuie si ai terminat; oricum, executia unui script php nu dureaza (sau nu ar trebuie sa dureze ) foarte mult, resursele sunt distruse la terminarea scriptului
1. cum sa fac cache la html ?
asta e cea mai proasta alegere, cel putin in cazul meu: contentul e generat dinamic... si folosesc si templateuri diferite.
2. eu incerc sa castig si 0.001 secunde doar pentru constructorul include() incarcand fisierul php direct din ram si tu vii cu ideea de html cache pe disc ?
pai ma ingrop singur? accesarea discului inseamna si mai mult timp pierdut... si nu vreau asta.
@Pirahna ma refeream la concurentza mare pe site.
@Quber vreau performanta... ^^
Folosesc deja APC si PDO
Caut solutii pentru performantza maxima cu resurse minime. |
|
| Sus |
|
flubber
Data înscrierii: 14/Mar/2006
Mesaje: 237
Locație: Bucuresti
|
| Trimis: Lun Noi 26, 2007 6:24 pm Titlul subiectului: |
|
|
gibi a scris:
@Quber vreau performanta...
Folosesc deja APC si PDO
Caut solutii pentru performantza maxima cu resurse minime.
ok. performata deci
1. incepe cu code refactor, scapa de tot ce e in plus & stuff
2. optimizeaza queriurile, pune indecsi pe coloanele accesate mai des, etc
3. serveste pozele ( sau ce mai ai tu pe acolo, ce nu e dinamic ) prin intermediul aplicatiei, pune headere de cache, etc |
|
| Sus |
|
gibi
Data înscrierii: 27/Iul/2007
Mesaje: 38
|
| Trimis: Mar Noi 27, 2007 11:01 am Titlul subiectului: |
|
|
Cam tot ce e in cod e optimizat la maxim... la fel si query-urile. Sunt index-i pe tabele la ceea ce imi trebuie.
Cred ca o sa incerc sa fac scripturile php binare... sa vad daca se merita.
@flubber php is the perl killer :twisted: |
|
| Sus |
|
pentium10
Data înscrierii: 06/Sep/2006
Mesaje: 17
|
| Trimis: Mar Noi 27, 2007 12:39 pm Titlul subiectului: |
|
|
Urmatorul script verifica daca
avem salvat content html pe disc in FOLDERDESALVARE
se salveaza in urmatoare formula dar cu md5 hash
domain.com/dir1/dir1/file1.php?param=1¶m=2
daca avem fisier si content este recent < 24h atunci afisam content si exit
daca nu atunci scriptul va rula, si la sfarsit va crea acest fisier
astfel tu vei avea content generat pentru urmatorul vizitator
faci un FOLDERDESALVARE si pui chmod 777
Cod:
// pui la inceputul fisierului
ob_start();//to cache the content
session_start();
header('Content-Type: text/html; charset=iso-8859-2');
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Cache-Control: private");
header("Pragma: no-cache"); // HTTP/1.0
$fstr="FOLDERDESALVARE/".md5($_SERVER["HTTP_HOST"]."".$_SERVER['SCRIPT_NAME'].$_SERVER['QUERY_STRING']);
// am stringul cu tot requestul, hai sa vedem daca avem content valid si salvat neexpirat
if (@file_exists($str)) {
$t1=filemtime($str);
$t2=strtotime("now");
if ($t1+(3600*24)>$t2) { // este valabil 24 de ore, apoi va fi regenerata
include($str);
exit;
}
}
.................
.................
.................
// pui la ultima linie
@file_put_contents($fstr.$firefox,ob_get_contents()); // vezi poate nu ai file_put_contents, atunci faci cu fwrite
|
|
| Sus |
|
gibi
Data înscrierii: 27/Iul/2007
Mesaje: 38
|
| Trimis: Mar Noi 27, 2007 12:53 pm Titlul subiectului: |
|
|
Nu ati inteles ideea acestui post.
Nu vreau solutie de cache!
Explic din nou pe larg ceea ce ma intereseaza:
Am un site, si intr-un director 'classes' am 10-30 de fisiere cu Clase de php
la generarea unei pagini folosesc 4-6 clase (template, resize imagini, paginare, sesiune, etc).
Problema mea e ca pierd mult timp cand includ clasele plus header.php + menu.php + footer.php + etc (fisiere care contin doar cod php).
Ca sa nu accesez discul pentru generarea paginilor, vreau sa fac un disc virtual in ram (RAM Disk Drive) pe care il creez de fiecare data cand porneste sistemul, il montez, copii fisierele care ma intereseaza in Ram Disk si le accesez de acolo.
Toate astea pentru a nu accesa discul ... sa nu pierd timp. Acel 0,001 secunde, pentru mine conteaza, mai ales ca nu am SCSI sau alte RAID-uri cu X mii de rotatii pe minut. |
|
| Sus |
|
pentium10
Data înscrierii: 06/Sep/2006
Mesaje: 17
|
| Trimis: Mar Noi 27, 2007 1:18 pm Titlul subiectului: |
|
|
sunt curios cat iti ia generarea unei pagini?
ai auzit de eAccelerator? |
|
| Sus |
|
gibi
Data înscrierii: 27/Iul/2007
Mesaje: 38
|
| Trimis: Mar Noi 27, 2007 2:00 pm Titlul subiectului: |
|
|
Citat: Folosesc deja APC si PDO
deci am deja solutie gen eAccelerator ...
citizi fratilor inainte sa postatzi |
|
| 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 |
|
| |