使用PHP延迟表单处理

时间:2018-12-14 17:44:55

标签: php

当用户单击“提交”时,会发生很多表单处理,因此花很长时间才将其发送到“谢谢”页面。

我正在尝试寻找一种推迟表格处理的方法。因此,我立即将它们发送到“谢谢”页面,然后再进行所有表单处理工作。

我现在看到的唯一方法是将所有数据放入$ _POST(下面的示例)并使用cURL发送。但这是最好的方法吗?没有内置的PHP函数可以做到这一点吗?

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"http://www.example.com/form_processor.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
            http_build_query(array('postvar1' => 'value1')));

// Receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);

curl_close ($ch);

2 个答案:

答案 0 :(得分:2)

解决这个问题的一种方法是拥有一个队列系统

  • 用户提交表单
  • 过帐的值保存在数据库表中
  • 为用户提供了感谢页面
  • 设置了cron以运行PHP脚本
  • 此PHP脚本在数据库中运行所有未处理的行
  • PHP脚本使用保存在数据库中的过帐值来处理表单
  • PHP更新行以将其标记为已处理

这是非常可扩展的,它使您可以控制何时以及如何处理表单,以及记录和回复表单处理调试错误。

答案 1 :(得分:1)

如果您不想坚持使用php,那么ajax可能是一个不错的选择。使用异步的ajax调用进行处理,并且页面将不等待直到处理完成。

对于http客户端,您可以使用guzzle,这比直接使用curl容易得多。