Newsgroup: it.comp.www.php
Titolo: alcune pagine o codice in modo compilato

è possibile in un applicativo poter far girare alcune pagine o codice php
in modo compilato e come? 
 
 


Definisci "modo compilato"
 
-- 
I cosi mi fattano

 Definisci "modo compilato"
 
E a questo punto anche "applicativo".
 
-- 
Andrea
 

 E a questo punto anche "applicativo".
 
cms con varie pagine php
 
riguardo compilazione
invece di avere un file con del codice php che deve ogni volta essere
trasformato in linguaggio macchina 
avere al suo posto un file gią pronto in linguaggio macchina 
 
forse č un lavoro che fa eaccelerator; da quanto ho capito elimina il
passaggio di compilazione (lo fa solo la prima volta poi il file lo mette
in memoria):
non so se crea un file temporaneo o un file persistente per cui 
il file php originale potrebbe anche non servire piu';
 
 
 
 


 
non so quanto le tue necessità abbiano bisogno di un compilatore
comunque
 
http://stackoverflow.com/questions/1408417/can-you-compile-php-code
 
 
php nasce come linguaggio interpretato e stravolgerne l'essenza ha poco 
senso in contesti normali, forse se hai la necessità per questioni di 
performance invece di forzare php a fare cose per cui non è nato, pensa 
a cambiare linguaggio con uno più adatto.
 
ciao
 

 il file php originale potrebbe anche non servire piu';
 
Forse potresti anche guardare a qualche soluzione di reverse proxy?
Tipo Nginx o varnish?

 mette in memoria):
 
Non sono aggiornato su eaccelerator. È ancora sviluppato?
 
Fino a PHP 5.4 puoi usare APC (se lo usi come modulo apache. Non funziona 
se lo usi come cgi), che compila automaticamente gli script e li tiene in 
cache precompilati per un certo tempo.
 
Da PHP 5.5 hanno integrato tutto nel modulo, quindi non serve più 
installare niente.
 
APC, una volta installato, lo puoi usare anche da PHP come cache 
applicativa, non solo per i precompilati.
 
Con CGI è un casino perché vengono istanziati a ogni richiesta, mentre 
con FastCGI hai un tot di processi pre-spawnati in parallelo, quindi 
rischi di trovarti n cache diverse.
 
Bye.

Vuoi farlo per tutelarti? Per non dare la possibilita a chi detiene accesso al server di modificare/rubare il tuo codice?

 Vuoi farlo per tutelarti? Per non dare la possibilita a chi detiene accesso al server di modificare/rubare il tuo codice?
 
 
sia per velocizzare esecuzione che proteggere codice 
 
da quanto ho capito solo con la compilazione si ha massima protezione;
 
 

 rischi di trovarti n cache diverse.
 
 
riguardo la protezione del codice invece sono validi entrambi o servono
solo a velocizzare ?
 

 solo a velocizzare ?
 
Servono solo a velocizzare.
 
Credo che, se ce ne sono, siano rimasti solo software a pagamento per 
"proteggere" il codice.
 
Bye.
 


devo fare ricerca, però eaccelerator mi sembra di aver letto che fa
entrambi (era turck mmcache); forse non è piu' aggiornato;
 
riguardo i software a pagamento:
con le " "  intendi dire che quasi proteggono?
crecando ho visto che ci sono molte soluzioni:
offuscatori, ma facilmente reversibili (ma senza i commenti e nomi
cambiati)
 
encoder vari; non ho capito se reversibili o no, o solo in parte;
mi sfugge il fatto che, siccome serve una dll x la decodifica da mettere
sul server, chi ha accesso al server avrà anche la dll e quindi immagino
ha lo chiave per decodificare o non è possibile comunque?
 
 
compilatori invece niente o sbaglio?
non sarebbe la soluzione migliore e che servirebbe anche x accelerare?

 non sarebbe la soluzione migliore e che servirebbe anche x accelerare?
 
No. Per come funzionano i linguaggi dinamici come PHP, Python, Ruby, 
ecc., un compilatore varia dall'"impossibile da realizzare" al "guadagno 
in prestazioni molto scarso".
 
Il compilatore di Facebook non compila PHP standard, ma un subset con 
alcune limitazioni, per esempio. E l'aumento di prestazioni non è nemmeno 
vicino a quello che ti aspetteresti da una riscrittura in C o in Go, per 
esempio.
 
La via di mezzo è appunto una cache di precompilati (in bytecode, non in 
binario) come APC.
 
La vera protezione dal codice ce l'hai solo a livello legale: licenza, 
contratto e avvocato. Tutto il resto è craccabile.
 
La domanda che si fa più spesso è: sei proprio sicuro che il tuo codice 
sia così tanto innovativo da necessitare una protezione del genere? In 
questo caso ti costa meno prenderti un tuo server e farlo girare lì, così 
non devi mostrarlo a nessuno.
 
Bye.
 
 

 binario) come APC.
 
pero' no riguardo protezione o sbaglio?
 
usando un encoder tipo zend o alternative economiche si puo' usare poi apc?
 
 
 
 
 
 
 
 
 
 

 
 
 
lo usi?
ma compila?
 
 
 
 
 
 
 
 

 rischi di trovarti n cache diverse.
 
 
non ho capito
con cgi è un casino
mentre con fast-cgi .... è pure un casino;
sembrava da come impostata la frase  che in un modo era meglio
 

 apc?
 
Non ti serve, visto che l'encoder già precompila in bytecode prima di 
"crittare", quindi non ti serve una cache di bytecode.
 
Bye.


Hai ragione, non sono stato chiarissimo.
 
Con CGI semplicemente non funziona, perché la cache viene persa alla fine 
di ogni chiamata.
 
Con FastCGI hai una cache per ogni processo FastCGI spawnato, quindi 
funziona a singhiozzo.
 
Bye.

 poco è conveniente il servizio web.
 
Ho dato una scorsa al sito. Sì, non sembra male.
 
"Soffre" un po' del problema che hanno avuto eAccelerator e APC, e cioè 
che la versione di ottobre supporta PHP 5.4, mentre la 5.5 è uscita a 
giugno, ma non conosco nessuno che abbia la 5.5 in produzione, ancora, 
quindi è perdonabile. :)
 
Per nawfer: tieni sempre conto che quando si parla di "compilato" si 
intende "compilato in bytecode", non in binario.
 
L'unica eccezione (AFAIK) è il compilatore di facebook, hiphop, che di 
recente è diventato una VM con compilatore just in time. Non so se 
l'hanno fatto (abbandonare la precompilazione in C++ per una vm jit) per 
compilare solo quello che riescono a compilare, e lasciare bytecode il 
resto, o per altri motivi.
 
C'è anche un "compilatore" di MS, che però trasforma in CIL, quindi 
sempre bytecode ma per un'altra vm.
 
Bye.