首页 > 解决方案 > 使用 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);

标签: php

解决方案


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

  • 用户提交表单
  • 过帐值保存在数据库表中
  • 用户获得感谢页面
  • 设置了一个 cron 来运行 PHP 脚本
  • 此 PHP 脚本运行数据库中任何未处理的行
  • PHP 脚本使用保存在数据库中的发布值来处理表单
  • PHP 更新行以将它们标记为已处理

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


推荐阅读