Differenze tra CLI e CGI

📅   15. 10. 2021
👤   Jan Barášek

PHP può funzionare in diversi ambienti. L'ambiente più comune è CGI, che viene eseguito quando PHP elabora una richiesta HTTP. Tuttavia, è anche possibile eseguire uno script PHP dal terminale, nel qual caso è un cosiddetto compito CLI (Command-line interface).

Le differenze più importanti tra CLI e CGI

  • A differenza di CGI SAPI, CLI non scrive alcuna intestazione sull'output per default.
  • Ci sono alcune direttive php.ini che sono sovrascritte in CLI SAPI perché non hanno senso in un ambiente shell:
    • html_errors: il valore predefinito della CLI è FALSE.
    • implicit_flush: il valore predefinito della CLI è TRUE.
    • max_execution_time: il valore predefinito della CLI è 0 (illimitato)
    • register_argc_argv: il valore predefinito della CLI è TRUE.
  • Lo script può accettare argomenti dalla linea di comando! La variabile $argc dà il numero di argomenti passati all'applicazione. E il campo $argv ti dà un array di argomenti reali
  • Ci sono 3 nuove costanti definite per l'ambiente della shell: STDIN, STDOUT, STDERR. Tutti sono gestori di file per il dispositivo shell corrispondente. Per esempio, STDIN è un gestore di file per fopen('php://stdin', 'r'). Quindi puoi leggere una linea da STDIN in questo modo: $strLine = trim(fgets(STDIN));. Il STDIN è già definito per te usando la PHP CLI.
  • La PHP CLI non cambia la directory corrente nella directory dello script in esecuzione. La directory corrente per lo script sarebbe la directory in cui si esegue il comando PHP CLI.
  • Ci sono un certo numero di opzioni UTILI disponibili per la CLI di PHP. Che ti permettono di ottenere alcune informazioni preziose sul tuo setup php, il tuo script php o di eseguirlo in diverse modalità.
  • In PHP 5 ci sono stati alcuni cambiamenti nei nomi dei file CLI e CGI. In PHP 5, la versione CGI è stata rinominata in php-cgi.exe (precedentemente php.exe) e la versione CLI si trova ora nella directory principale (precedentemente cli/php.exe).
  • Un nuovo modo è stato introdotto in PHP 5: php-win.exe. Questo è equivalente alla versione CLI, eccetto che in php-win non viene stampato nulla, e quindi non fornisce alcuna console (non viene visualizzato alcun "dos box" sullo schermo). Questo comportamento è simile a quello di PHP GTK.

Jan Barášek     Maggiori informazioni su l'autore

L'autore lavora come sviluppatore senior e architetto software a Praga. Progetta e gestisce grandi applicazioni web che conoscete e usate. Dal 2009 ha acquisito una grande esperienza che trasmette attraverso questo sito web.

Sarò felice di aiutare:

Contact