Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Consulenza

  1. #1

    Consulenza

    Ciao a tutti,
    credo che non ci sia luogo migliore di questo per chiedere un parere che mi convinca della scelta che sto per fare.
    Capisco che è come chiedere al'oste se il suo vino è buono, ma se è possibile vi chiedo uno sforzo di obiettività.

    Devo fare sviluppare un sito di servizi (non si tratta cioè di un progetto di comunicazione) e vorrei farlo su piattaforma PHP-MySQL; si tratta di un sistema che in rapida sintesi potrei descrivere così:
    - Durante la notte (in modalità batch) importa dati foniti dall'esterno via FTP controllandoli e inserendoli in archivio
    - Al termine delle importazioni, sempre di notte, per ogni record importato esegue degli algoritmi di calcolo, memorizzando i risultati sempre su DB. In certi casi questi algoritmi possono essere un po' complessi (non moltissimo, in verità) e richiedere alcuni accessi al DB per la lettura di parametri ed informazioni accessorie al calcolo
    - Nel corso della giornata, sul sito possono essere interrogate queste informazioni, prodotti report riepilogativi in formato Excel o PDF, opure corretti / modificati i dati del singolo record per poi rilanciare l'esecuzione degli stessi algoritmi, che questa volta devono rispondere con il risultato in tempo reale.

    Qualche numero per inquadrare i volumi previsti a regime:
    - 5.000 record importati al giorno
    - 30 accessi medi al database per l'esecuzione degli algoritmi per ogni record
    - 10 utenti attivi contemporaneamente durante la giornata

    E ora le domande:
    - Questo sistema costituirebbe il core business dei servizi erogati; PHP come linguaggio di scripting è abbastanza efficiente ed affidabile per dargli un tale compito?
    - Programmazione procedurale o a oggetti: non conosco il linguaggio (non sono uno sviluppatore), da cui la domanda, se volete stupida: le strutture di cui PHP dispone per la programmazione procedurale sono sufficientemente complete per supportare lo sviluppo di un sistema business critical? E per quanto riguarda la programazione ad oggetti in PHP?
    - Più in generale: per un sistema di questo tipo ritenete verosimile o utile utilizzare questa piattaforma, o conviene rivolgersi a qualcosa di più solido e consistente come la programmazione Java su JBoss, che ritengo però essere più costosa in termni di sviluppo?

    Vi ringrazio davvero per ogni parere ed ogni elemento che potete darmi per ragionare e prendree una decisione consapevole e, soprattutto, CONVINTA.

    Andrea

  2. #2
    beh da me avrai una risposta sincera

    Risposte:
    1° PHP è "lento" rispetto ad altri sistemi come C# o Java per il semplice motivo che php è interpretato a run-time ad ogni esecuzione e convertito in bytecode che viene eseguito, senza considerare che non avendo pratica col linguaggio andresti ad usare strutture che di norma sono più veloci ma che con php non lo sono. Ovviamente ci sono sistemi come APC, eAccelerator e via dicendo che sono gratuiti è aumentano notevolmente la performance del proprio software, anche se credo secondo me siamo sempre sotto C# o Java nella media

    2° Ovviamente programmazione ad oggetti, ma non troppo forbita direi: php mira alla velocità di sviluppo però per evitare di perdere tutti quelli che non sono solo smanettoni e vogliono crearsi una base di codice RIUSABILE sempre e comunque hanno implementato la programmazione ad oggetti anche se comunque è carente di non poche cose (se cerchi sul forum trovi un thread recente), anche se comunque c'è tutto quello che serve di norma

    3° Se cerchi un buon compromesso tra costi di sviluppo, tempi di sviluppo, performance finali, costi di gestione e cosi via secondo me è la scelta migliore, anzi, per essere preciso, io uso php ancora solo per questo dato che altri linguaggi come Java o C# fanno schizzare i tempi di sviluppo e i costi verso l'alto di non poco, poi ovviamente vanno valutate le situazioni perché 5000 records importati al giorno non sono assolutamente nulla se sono ben strutturati nel database, ma se sono strutturati male e oltre a questo ci aggiungi che sono gestiti male tramite php, beh, allora l'applicativo diventa una killer application che anche con 10 record killa il server

    Per killare un server intendo che la tua pagina utilizza qualche mega di memoria di troppo o tiene il processore al 100% per un tempo lungo ed indefinito, ma questo lo otterresti con qualsiasi linguaggio se il codice è fatto male

    In PHP non hai, ovviamente, i THREADS, per rendere asincrone le operazioni, anche se comunque ci sono dei design patterns che ti permettono di ottenere lo stesso risultato: ovvero vai a simulare l'asincronità del sistema, anche se comunque ciò non è sempre fattibile. In alternativa ci sono i FORKS, ovvero una duplicazione del processo che porta con se TUTTA la memoria corrente dello script, cosa che se è usata male è peggio ancora di una normale killer application: vanno prima forkati i processi, poi nel processo principale vanno caricati i dati ed infine tramite PIPE, Socket UNIX/TCP o Messaggi con la memoria condivisa e semafori e cosi via vanno passati questi ai vari gestori che si occupano di eseguire le operazione e passare i dati indietro, anche se però ritengo che se si va a finire ad un livello di complessità di questo genere probabilmente php non è molto adatto

    Spero di non aver fatto troppi errori di italiano dato che non ho minimamente riletto quello che ho scritto e spero di aver acceso un lumino e non averti confuso ancora di più

    Se cerchi invece la risposta: mi conviene/non mi conviene ... non è possibile dartela, ne io ne nessun altro perché quello che tu hai esposto ritengo sia l'1% di tutto l'insieme di informazioni che hai riguardo questo progetto, informazioni che potrebberò orientare in modo diverso persone diverse

    Se vuoi un mio consiglio spassionato: fai dei test per verificare che il sistema non crolli e nel caso che succede passa a C# col .NET o a Java, anche se sinceramente ti consiglio il primo perché ha comunque dei costi di gestione inferiori a quelli di Java ottenendo ottime performance

    Mentre come puoi vedere tra C# e Java non ci sono differenze estreme: c# consuma meno memoria in generale ma java ha performance superiori in generale
    http://shootout.alioth.debian.org/gp...arp&lang2=java

    tra C# e PHP e Java e PHP c'è il più totale ed assoluto abbisso
    http://shootout.alioth.debian.org/gp...harp&lang2=php
    http://shootout.alioth.debian.org/gp...php&lang2=java

    java, in uno dei test, arriva ad essere BEN 146 volte più veloce di php
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.