Come altri hanno notato, varie versioni di PHP hanno problemi con i loro garbage collector. Ovviamente, se sai che la tua versione non presenta tali problemi, elimini quel problema. Il punto è che tu, , non conosci (sicuramente) lo finché non scrivi il demone ed eseguilo attraverso valgrind per vedere se il PHP installato perde o meno su un dato computer. Quindi, su quella mano, potresti scriverlo solo per scoprire che ciò che Zend pensa sia fisso potrebbe ancora essere bacato, o hai a che fare con una versione leggermente più vecchia di PHP o qualche estensione. Icky.
L'altro problema è un segnale piuttosto buggato. Nella mia esperienza, i gestori di segnale non sono sempre inseriti correttamente con PHP, specialmente quando il segnale viene accodato anziché unito. Questo potrebbe non essere un problema per te, cioè se hai solo bisogno di gestire SIGINT/SIGUSR1/SIGUSR2/SIGHUP.
Quindi, suggerisco:
Se il demone è semplice, andare avanti e utilizzare PHP. Se sembra che diventerà piuttosto complesso, o allocerà molta memoria, potresti prendere in considerazione la possibilità di scriverlo in C dopo averlo prototipato in PHP.
Sono una persona C piuttosto magra. Tuttavia, non vedo nulla di sbagliato nell'usare qualcosa di veloce usando PHP (oltre ai casi che ho spiegato). Inoltre, non vedo nulla di sbagliato nell'usare PHP per prototipare qualcosa che può essere o meno riscritto in seguito in C. Ad esempio, la gestione dei database sarà molto più semplice se si utilizza PHP, rispetto alla gestione dei callback utilizzando altre interfacce in C. Quindi in quell'istanza, per un "one off", lo farai sicuramente molto più velocemente.
fonte
2009-03-15 13:20:47
Ci sono un sacco di lingue "tra" PHP e C! Se PHP non funziona (ed è un linguaggio volgare per tale compito) potresti trovare Python o qualsiasi altra cosa che è generalmente considerata "affidabile" più veloce di C. –