Newsgroup: it.comp.www.php
Titolo: Soap e php4

Salve a tutti,
ho creato un piccolo webservice utilizzando NuSOAP e php4: funziona 
tutto, ma controllando le performance ho visto che la maggior parte del 
tempo viene "sprecata" a caricare la libreria NuSoap...
0.08 secondi contro 0.01 dell'elaborazione successiva del webservice..
C'è modo di ottimizzare la cosa? Oppure, cos'altro posso usare per 
rendere più rapido il tutto?
Tenete conto che il webservice in questione verrà utilizzato in ambiente 
"Trading online" e quindi deve essere molto prestante (0.08 secondi non 
sono un'eternità, ma se si possono limare è meglio!!)
Grazie
Mauro

 secondi non sono un'eternità, ma se si possono limare è meglio!!)
Ed utilizzate l'HTTP?
Perche' non sviluppate un server socket ottimizzato invece di SOAP over
HTTP?
Oppure, se proprio non volete fare a meno di PHP, perche' non un web
service REST?
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

rendere piů rapido il tutto?
PHP come FastCGI? O direttamente come servizio?
Leonardo
--
The stars have not dealt me the worst they could do:
My pleasures are plenty - my troubles are two.
But oh!, my two troubles, they reave me of rest:

 
perchè mi è sembrata la soluzione più veloce da implementare... e da 
riutilizzare su qualsiasi hosting..
hai idee che possano essere messe su un hosting qualsiasi che supporti 
php e mysql?
Mauro

 Leonardo
Mi fai una domanda... che non so rispondere...
Il server web è intranet adesso e non so come sia configurato... 
possibile che stiamo viaggiando in CGI semplice?

 supporti php e mysql?
Trading online su un qualsiasi hosting?
Ma avete fatto un'analisi funzionale del progetto prima di iniziare lo
sviluppo?
E se il server va in crash lasciando i clienti con posizioni aperte?


 
Scusa, non ho dato tutte le specifiche....
Il progetto è per il trading online, ma non per la gestione degli ordini...
In pratica è stato richiesto un software da alcuni trader che vogliono 
mandare "segnali" ai propri clienti direttamente sul desktop:
il "gestore" attraverso un software sul suo pc inserisce nel server il 
suo "segnale" e tutti i clienti attraverso polling al secondo ricevono i 
segnali aggiornati.
Questo è quello che deve fare... io per evitare problemi di NAT, 
firewall e quant'altro avevo pensato di appoggiarmi ad un web server in 
hosting raggiungibile dal gestore e dai clienti senza problemi.
Mauro

 lasciando i clienti con posizioni aperte?
beh, avranno previsto un timeout di validazione trascorso il quale l'ordine
verrà messo in errore alla prima occasione
poi è ovvio che se c'è la possibilità di mettere un paio di server mirror o
cmq in garanzia che non vada mai giù tanto meglio,
ma cmq la gestione degli imprevvisti non si limita solo al server...

possibile che stiamo viaggiando in CGI semplice?
No, no, dicevo: puoi provare a implementare PHP in modalita' FastCGI.
Oppure - posso permettermi un'eresia? Si'?
Be', un web service alla fin fine e' un affare che riceve un input, e
tira fuori un output.
Puoi validare l'input contro una regexp, per estrarne contestualmente
i dati con cui costruire la query.
E poi formattare l'output con una semplice print.
Alla fin fine se devi solo domandargli "How are you?" e "What time is
it", che differenza c'e' fra uno che parla benissimo inglese (o SOAP)
e uno che sa solo dire con accento perfetto, "Fine, thanks" e leggere
l'ora? :-)
Naturalmente, certo, certo, ci perdi in flessibilita' (il tuo file ti
sapra' solo rispondere a quelle tre cose) - ma le prestazioni sono un
altro mondo.
===
1. Implementazione in NuSOAP.
2. Guardi cosa c'e' di qualificato nell'input con i vari client e che
   cosa viene fuori in output.
3. Potra' succedere che diversi client inviino XML differente, 
p.es
.,
   <item attribute="value">.. o <item..><attribute>value</attribute>,
   e dovrai gestire TUTTI questi casi.
   Che si riduce a
	if (N != preg_match(expr1
	if (N != preg_match(expr2
	...
	if (N != preg_match(exprK
	{
		print <<<SOAPERRORRESPONSE
...
SOAPERRORRESPONSE;
		die();
	}
	...
	print <<<SOAPRESPONSE
...SOAP copincollato dalla risposta generata da NuSOAP, con le
parti variabili sostituite da $queryresult[field] escapate con
grazia...
SOAPRESPONSE;
Leonardo animale


 
Ho seguito il tuo consiglio... ho eliminato il webservice, ho usato 
$_POST e passo una stringa da serialize() ( con una implementazione 
tramite .NET) e va alla grande!
in 0.02 secondi faccio tutto il processo! e fino a 10 utenti sto dentro 
ad un tempo accettabile!
Mauro