通过浏览器或CLI调用PHP脚本有区别吗


Is there a difference between calling a PHP-Script via browser or via CLI?

我和我的室友都在发展。。我正在通过浏览器测试我的脚本。。他通过CLI调用他的脚本,并试图说服我也通过CLI这样做。。"因为它不同"。。我看不出有什么不同,我认为这是不合逻辑的。。。。。所以除了http/tcp开销之外。。通过HTTP调用脚本和通过CLI调用脚本之间有什么本质区别吗?

HTTP

这些值可以作为GETPOST方法传递,它们将分别在php全局数组$_GET$_POST中可用。

http://localhost/project/index.php?id=4

CLI

ID的值可由$_GET['id']访问但在CLI模式下,可以将值作为参数传递,这些参数将在$argv数组中可用。

php /var/www/project/index.php 4

值可由$argv[1] 访问

在大多数环境中,cli版本不会加载相同的php.ini设置。这用于避免在嵌入式(mod_php)或守护程序(php-fm)版本中应用的限制

例如,在cli模式下,不需要低memory_limitmax_execution_time

这是cli模式在异步任务(可能是长任务和内存繁重的任务)方面的一大优点。

现在,对于测试应用程序,如果最终应用程序必须在http服务器(mod_php)或php守护进程(php-fpm)中运行,则在cli模式下测试应用程序是一个缺点,因为您的测试不会检测到大问题(比如达到内存限制时崩溃,或者在达到最大执行时间时没有响应,甚至之前出现任何其他超时(在http服务器或fastcgi协议中))。