嗨,我是 PHP 新手,不知道我要问的问题是否可能,或者它是否有意义,但这里有。
我想执行一个PHP脚本,就好像我在WebServer上执行一个独立的应用程序一样,我想要实现的是当客户在网站上购买东西并且一旦他在网站上看到付款确认通知,他应该一旦用户被带到显示他支付成功的页面,就可以关闭浏览器窗口或注销,而不会影响开始的大订单生成过程。
现在我正在使用 AJAX 调用我的付款后处理 PHP 脚本,并保留该脚本以忽略任何用户中止调用。
这是告诉用户付款已成功收到的页面。
谢谢你.php
这是执行付款成功后才需要进行的处理的页面
FinishCheckoutProcess.inc.php
现在thankyou.php利用AJAX异步执行FinishCheckoutProcess.inc.php , FinishCheckoutProcess.inc.php中有一个PHP.ini设置,如下所示:ignore_user_abort(true);
现在 AJAX 和 ignore_user_abort(true) 的组合允许即使用户关闭他的浏览器窗口,也可以在没有任何错误的情况下运行后付款流程,但是由于这个脚本与用户或浏览器无关,我只是想知道它是否可以像独立于浏览器的独立应用程序一样在后台运行此脚本。
我的 WebServer 也是 Apache,操作系统是 Linux(Ubuntu 操作系统)。
我的工作已经完成,但我只想知道是否有更好/更安全的方法来做。
无论如何,提前感谢大家,这个网站对我的帮助比任何一本书都多。所以你们所有为像我这样的新手贡献时间的专家们都很棒。请保持好的工作状态。
再次非常感谢。
根据收到的建议如果我使用“exec”方法执行 FinishCheckoutProcess.inc.php,这是否会执行与数据库相关的命令,是否能够运行更多的 PHP 脚本。
FinishCheckoutProcess.inc.php依次执行一系列其他 PHP 脚本,这些脚本又执行其他 PHP 脚本,因此使用“exec”命令运行 FinishCheckoutProcess.inc.php 会产生任何困难。
FinishCheckoutProcess.inc.php进程也与 MySQL 数据库进行交互,所以如果我使用“ exec ”命令执行此脚本,我将能够做到这一点。我现在正在将必要的 MySQLi 连接对象传递给这个 PHP 脚本。那么我可以使用“ exec ”以同样的方式将它传递给它吗
此外,该过程非常繁重,因为它使用IMagick和ImageMagick生成一组 4 个图像文件。
它为每个订购的产品生成一组 4 个图像文件,因此如果 1 个产品的数量为 10,则生成的总文件将为 1x10x4 = 40
如果有两种产品,一种的数量为 2,另一种的数量为 4,则生成的文件总数将为 1x2x4 = 8 + 1x4x4 = 16 = 24
所以这个脚本可能需要运行很长时间,并且由于超时原因不能被停止,它需要完成它开始的事情。
基本上FinishCheckoutProcess.inc.php逻辑和过程非常复杂,所以只想确认“ exec ”是否可以处理它。
我也不确定,但其中一些也使用 $_SESSION 变量,但如果这是一个问题,我可以修改它,$_SESSION 变量只能在一个地方使用,是的,$_SESSION 变量是在FinishCheckoutProcess 之前在浏览器中设置的。 inc.php脚本被执行。通过一些以前的 PHP 脚本。
我只想执行独立于父/调用脚本的FinishCheckoutProcess.inc.php脚本,即thankyou.php,这样如果用户关闭浏览器,则FinishCheckoutProcess.inc.php不会因为父/调用脚本而停止或中止即thankyou.php现在不再运行。