Python e PHP possono funzionare insieme?

8

Sto avendo un'app mobile creata per iOS. Gli sviluppatori hanno creato l'app in PHP. L'app richiede un algoritmo, quindi ho trovato un altro programmatore per svilupparlo. Il programmatore dell'algoritmo ha costruito l'algoritmo in python. Gli sviluppatori si rifiutano di completare l'app perché dicono che non funzionerà con Python, mentre il programmatore insiste che lo farà. Il programmatore dice di mettere l'algoritmo nel suo server e collegarsi poi su http. Questo lavoro funzionerà e vorrei essere così rischioso per i problemi futuri?

    
posta user71741 03.11.2012 - 12:42
fonte

1 risposta

11

Will this work and I'd so how risky is it to future problems?

Sì, funzionerà e quanto è rischioso dipende da quanto è buona la tua implementazione. Questo è perfettamente accettabile se fatto correttamente. Ho integrato con successo PHP e C, quando PHP era semplicemente troppo lento per eseguire determinati compiti di nicchia in tempo reale (IIRC, PHP è 7 volte più lento della sua controparte C).

La migliore implementazione è ignorare il fatto che siano specificamente PHP / Python e trattarli come due lingue separate.

Ora, devi scegliere un modo "standard" di interagire. Il protocollo HTTP è probabilmente il più semplice: tutti hanno già installato un server Web, quindi è solo questione di mettere online lo script.

Da qui, devi allontanarti dal fatto che sono ancora in PHP / Python e progetta la tua API senza saperlo. Ad esempio, immagina di avere una calcolatrice:

<?php
print '<answer>' . ($_GET['one'] + $_GET['two']) . '</answer>';
?>

Quindi la tua API sarebbe http://location/script.php?one=5&two=7 . Questo è perfettamente accettabile: l'utente dell'API si aspetta una risposta all'interno di un tag <answer> (il mio esempio è un XML pigro mans, puramente come una dimostrazione, ma penso che dovresti esaminare l'output JSON ). Questo, non è:

<?php
print eval($_GET['expr']);
?>

Poiché la tua API sarebbe http://location/script.php?expr=5+7 . Anche se risultasse nella stessa risposta (e, ignorando i principali difetti di sicurezza), il chiamante deve conoscere i dettagli di implementazione di PHP ( eval è una funzione PHP che valuterà semplicemente il suo input come vero codice PHP). Se hanno fatto 2^3 , è quel 2 xor 3 o 2 * 2 * 2 (2 alla potenza 3). Questo è un cattivo progetto: i tuoi input dovrebbero essere indipendenti dalla lingua in cui la tua API è implementata. Oltre a questo, come possiamo distinguere tra un messaggio di errore e una risposta? Nessuna magia "se la risposta non è un numero", per favore.

Lato Python - devi solo assicurarti che le richieste HTTP falliscano con garbo. Se non riesci a connetterti al tuo script, prova di nuovo, e se fallisce, lascia un bel messaggio di errore chiedendo loro di riprovare più tardi. Non mostrare solo una traccia dello stack Python.

Dovresti anche documentare la tua API nel modo migliore possibile - questo ti farà risparmiare un sacco di tempo lungo la linea. Di 'ciò che ciascuno degli input dovrebbe essere, in quale intervallo dovrebbero rientrare e fornire alcuni buoni esempi su come usarlo.

Lato API: dovresti anche provare a fallire rapidamente se qualcosa non va. Se una variabile è mancante, incompleta o non valida, stampa un messaggio ed esci come prima cosa che fai. Esegui non semplicemente esegui i valori e poi fagli tornare un messaggio di errore PHP (ricorda che non dovrebbero sapere o preoccuparsi di quale lingua è implementata la tua API), ma dovrebbe ottenere una percentuale di cortesia piacevole % co_de.

    
risposta data 03.11.2012 - 13:04
fonte

Leggi altre domande sui tag