我可以在后台运行一个.php文件吗?

在这里,

在用户注册时,我从第三方服务导入大量信息,

但问题是页面需要大量的加载,有没有办法在后台运行这个“导入”过程? (所以用户不必等待很长时间才能看到该页面,并且可能在下一次刷新时完成导入)

谢谢

0
额外
意见: 1
@LoneWOLFs是的,但问题是,如果用户关闭了Ajax,那么该进程会中止
额外 作者 Toni Michel Caubet,
大声思考......你可以通过cron在服务器上运行一个PHP文件,比如说每5分钟一次,它检查一个新用户是否被注册。如果是这样,它可以启动导入过程,并在该过程完成后,在db列中标记“完成”。您可以阅读并相应显示信息。
额外 作者 web-nomad,
您是否考虑过通过ajax调用获取这些信息,从而立即显示页面并在信息加载时显示优雅的加载器?
额外 作者 LoneWOLFs,

2 答案

您必须设置一个cron作业(如果您正在运行Linux),该作业执行curl命令来访问PHP脚本(外部,如'curl http://domain.com/php/something.php ')或者只是执行指向内部文件的php命令。

您可以创建一个每分钟执行一次的调度程序(这是cron作业支持的最小执行时间)并执行您的工作的“块”。当然,你必须设置PHP跳过默认使用的30秒执行限制。

0
额外

您需要将注册过程分为两步:轻量级页面加载而无需等待导入完成,另一个脚本完成繁重的工作。第一个将通过AJAX触发第二个。最终的结果将是一个“正在处理您的注册”页面,在工作者脚本完成时适当更新。

您应该小心地致电 ignore_user_abort ,这样如果用户在等待页面上关闭浏览器窗口,注册过程不会中止。

0
额外
ignore_user_abort会让脚本运行,即使它是异步调用的,用户也会使用MAIN选项卡?
额外 作者 Toni Michel Caubet,
好的,所以是...?
额外 作者 Toni Michel Caubet,
是的,我确定,我现在正在评估解决方案。如果这个工作,对我来说似乎是最简单的。 thaks!会尝试让你知道
额外 作者 Toni Michel Caubet,
它的工作,谢谢!
额外 作者 Toni Michel Caubet,
@ToniMichelCaubet:就服务器而言,不存在异步调用或主选项卡。所有这些只适用于客户的角度。
额外 作者 Jon,
@ToniMichelCaubet:是的,但你不必为此承担我的责任:自己尝试一下。
额外 作者 Jon,