Integrare php con java

  • Creatore Discussione Creatore Discussione PHP
  • Data di inizio Data di inizio
Stato
Chiusa ad ulteriori risposte.

PHP

Utente Attivo
9 Mag 2013
105
0
16
Salve, ho delle pagine fatte in php, ma avrei l'esigenza di integrarle con java.
Visto che sono pagine dinamiche e che php ogni volta che avviene il caricamento della pagina deve rieseguire tutte le operazioni come se non le avesse mai fatte, vorrei memorizzare i dati elaborati dalla pagina .php in java, per non farli rieseguire nuovamente al caricamento di un'altra pagina(visto ch java può tenerli in memoria).
Inoltre vorrei impedire il nuovo caricamento di elementi che si ripetono in ogni pagina(vorrei caricarli una volta e basta), l'effetto che vorrei è simile alla funzione jquery onload, che permette ad esempio di caricare in un <div> un'elemento contenuto in un'altra pagina senza aggiornare gli elementi che la compongono. Il problema con il metodo jquery è che non avviene un'effettiva navigazione, ovvero rimanendo nell'index si può sfogliare tutto il sito, ma per motivi sia funzionali che di indicizzazione questo metodo non va bene per me, e l'unico che potrebbe svolgere un lavoro simile è java.
Il problema è che non trovo guide java(ho trovato javascript, jquery, php, ma non java) che spieghino come approcciarsi al problema. Chiedo scusa se la risposta è complessa, ma vorrei almeno una guida con un capitolo che tratti di questo(o una pillola).
 
Il fatto è che ho visto queste pagine:
HTML:
http://php-java-bridge.sourceforge.net/pjb/,
 http://www.html.it/articoli/utilizzare-java-da-php-1/,
http://php.net/manual/en/book.java.php
se ti và di cliccare anche solo per vedere cosa sono, da quello che ho capito è un'adattamento di java, con codice php o simile(al posto del solito asp).
Andrò a vedere la chache di cui hai scritto, però ho propio bisogno di adattare java per aumentare le prestazioni del server.
 
I manuali che hai linkato non hanno nulla a che fare con le prestazioni: si tratta di aggiungere il supporto per l'esecuzione di codice Java tramite PHP, tutto qui. Non è un convertitore, e il codice PHP viene eseguito come codice PHP. È una soluzione usata se hai del codice Java da far lavorare insieme a PHP. Questo avviene solitamente in applicazioni di grandi dimensioni che vengono scritte in più linguaggi.

Ripeto: per l'ottimizzazione di un'applicazione scritta in PHP si ottimizzano le chiamate al database (se ci sono), si esegue tutto il possibile in background, si utilizza la cache HTTP e si installa un acceleratore.
 
Visto che il php ripete le operazioni ad ogni esecuzione della pagina, volevo semplicemente memorizzarle per non ripeterle e java me lo permette.
Sicuro che devo abbandonare questa strada?
 
Sì, sono sicuro. Come ha già detto anche Fez, per salvare i risultati di operazioni "pesanti" si usano le cache, sia a livello client (cache HTTP) che a livello server.

Ma poi quali sono queste operazioni così pesanti?
 
Grazie per le risposte. Le operazioni 'pesanti' sarebbero esrazioni di un gran quantitativo di dati, comprese descrizioni, foto, ecc; e nel caso in cui si continuiasse a navigare queste liste molto grandi dovevano rimanere aperte per non creare un'altra select con relativa estrazione e stampa di dati tra server e client. Il problema che avevo notato è che quando richiamo le pagine il caricamento da capo di tutto genera un bel rallentamento, e solo le pagine che non sono settate per i prodotti non subiscono rallentamenti, inoltre aggiunte come la casella di facebook vengono generate con circa 2 secondi di ritardo dal caricamento di tutta la pagina, quindi volevo ovviare a questo inconveniente tenendo i dati caricati.
Mi permetto di dire che avevo visto su un sito, che specificava le caratteristiche dei vari linguaggi e permetteva di fare confronti, che con il php si riusciva a risparmiare molta più memoria che con java, ad esempio operazioni che con java usano 127.000 KB in php userebbero 32.000 KB per la stessa cosa (dati inventati ma quella è la proporzione), il problema era che java tiene in memoria ciò che fà, php invece continua a fare richieste al server.
Comuqnue io le cache le utilizzo solo per conte e simili, non sapevo si potessero usare per tenere in memoria operazioni fatte con php per non rieseguirle di nuovo. Andrò a vedere meglio l'argomento, ma potresti cortesemente farmi un esempio:
mettiamo che ho una stampa di nomi, settata con un limite di 30 per pagina, e adesso l'utente in pagina due vuole visualizzare i nomi contenuti tra 31 e 60, al posto di fare di nuovo la query, con select, stampa, ecc, come faccio con la cache a memorizzare questa informazione e saltare la query?(immagino sia un semplice if.., ma per memorizzare ciò che ho fatto?)
 
PHP fa la query e mette in $OUTPUT il contenuto della pagina generata.

Salvi in OUTPUT.data la pagina ed in OUTPUT.time la data di creazione.
Fai in modo che quando PHP va a creare la pagina controlli se esiste una versione abbastanza recente in cache, in quel caso carica i dati da OUTPUT.data invece che facendo query al database.
Nel caso non sia presente una versione abbastanza recente, gli fai rigenerare la cache
 
sul server.

Volendo potresti usare le nuove funzionalità di scrittura di Javascript per farli salvare sul client, ma non credo ne valga la pena, ameno ché non siano MB e MB di pagina.
 
Ho scaricato xampp, perchè l'host su cui mi appoggio adesso non supporta gli accelleratori, vi ho trovato anche installato tomcat(ma non lo userò, per via dell'accelleratore php e delle cache). Ma ho un problema: non riesco ad installare apc o eaccellerator, mi spiego: in pratica tutte le guide che ho trovato fanno riferimento a cartelle che non esistono nella mia cartella xampp->php->.., ad esempio dopo aver modificato il file di php.ini dovrei mettere i file riguardanti eaccellerator in una cartella ceh non esiste in tutto xampp (inoltre le aggiunte in php.ini non sono corrette, perchè secondo la guida dovrei metterlo in un punto specifico, che però non esiste, quindi l'avevo semplicemente messo alla fine).
Ho xaamp1.8-1.0 e PHP Version 5.4.7 installati su sistema operativo windows 7. Sapete dirmi come integrare eaccellerator o apc?
 
Forse le guide si riferiscono a macchine linux.

Potresti installare una virtual machine con su CentOS o Debian Server od Ubuntu Server e giocare con quella, almeno sei sicuro sia un ambiente completamente funzionante.
 
Grazie per la risposta, le guide le ho cercate per windows, anche se c'è ne sono di più per linux, ecc.
Ecco un esempio: http://www.modernfidelity.co.uk/tech/eaccelerator-php-windows, però non capisco dove aggiungere le righe, non specifica in quale parte di php.ini vadano inserite(php punto ini contiene solo istruzioni ed un array per le estensioni, ma non si possono aggiungere i file così come vengono mostrati), infine non capisco dove vadano i file ceh ho scaricato dal sito di eaccellerator(non lo specifica). Vi allego php.ini per farvi vedere.http://netload.in/datei9rqfhEbm4D.htm. La cosa più strana che potete notare è che ci sono dei file che fanno riferimento a eaccelelerator, e i rispettivi collegamenti in php.in, ma nella pagina di info non viene segnalato ottimizzato con eaccellerator(come dicono tutte le guide), quindi penso che non vada, ma non sò perchè.
 
ho fatto questo test:
Codice:
<?php
eaccelerator();
?>
E mi appare bagina bianca, secondo una guida dovrebbe apparirmi la scritta "eaccelleratos ...".
Se sapete postate..
 
Meglio continuare con questo, perchè sono riuscito quasi a configurarlo....
Dico qasi perchè adesso lo riconosce, ecco il php info:
Codice:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
    with eAccelerator v1.0-GIT-c5ac10d, Copyright (c) 2004-2012 eAccelerator, by eAccelerator
, ma se lancio un semplice:
Codice:
<?php eaccelerator(); ?>
mi dà pagina bianca. Lo trovo strana anche perchè senmpre nella pagina phpinfo sotto alle note della versione di php esce anche eaccellerator con elecate anche le sue caratteristiche. Mi chiedo se il codice
Codice:
<?php eaccelerator(); ?>
sia sbagliato, in alternativa cosa posso scrivere per verificare il funzionamento?
 
Non me ne ero accorto. Ma è un'accelleratore anche Zend? Comunque forse apro nuova discussione sul problema, visto che ero partito con una domanda su php/javabridge,ecc e ora siamo finiti qua^^.
 
Zend è un'azienda che sponsorizza lo sviluppo di PHP.

Zend Framework è un framework per lo sviluppo di applicazioni Web in PHP (altri framework sono Symfony, Yii, CakePHP, CodeIgniter, Laravel etc.).

Zend Engine è il motore di scripting che sta alla base di PHP.

eAccelerator è, appunto, un acceleratore.
 
Ultima modifica:
Stato
Chiusa ad ulteriori risposte.

Discussioni simili