0

这个问题的答案很可能是“不”,但是,嘿。我在 Wordpress 网站中有一个 Gravity Forms 表单——在用户提交表单后,我想运行一个函数来收集一些额外的数据。

我实际上并不认为 Gravity Forms/Wordpress 部分与我的问题非常相关,但我知道 stackoverflow 上的每个人都喜欢看一些代码。:) 在functions.php中,我使用以下方法挂钩表单的“提交后”事件:

add_action("gform_after_submission_15", "gravityforms_collectreportdata", 10, 2);

然后此函数执行以下操作:

function gravityforms_collectreportdata($entry, $form) {
ScanForMissingData($entry["post_id"]);
}

问题是 ScanForMissingData 需要一些时间,并且用户在收到“表单提交”消息之前等待它完成。真的我不需要用户等待这个。我只想让它在服务器上运行并让用户继续使用。理想情况下,我想做类似的事情:

function gravityforms_collectreportdata($entry, $form) {
StartInBackground(ScanForMissingData, $entry["post_id"]);
}

或者一些这样的。这在PHP中可能吗?

4

1 回答 1

0

嗯,不不,不;-) 实际上我可以想到几种方法。

首先,最好的情况是,如果您对主机具有 shell 访问权限,或者至少可以让某人为您安装一个 cron 条目。然后,您将该功能推迟到 cronjob,并将表单数据记录到某种队列中。

不可能?好的,在开始收集数据之前将表单提交响应传输给用户。回显响应页面(或任何 ajax 响应),执行 flush()(是的,在 flush() 之前添加大约 1024 字节的松弛开销),然后开始数据收集。不是那么浮华,仍然取决于网络服务器的超时设置,但用户有他的及时响应。

于 2013-10-21T19:12:25.523 回答