PHP 忽略 POST 请求

2024-02-23

我正在尝试在 PHP 中创建一个即发即忘方法,以便我可以POST数据发送到网络服务器,无需等待响应。我读到这可以通过使用来实现CURL就像下面的代码一样:

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_exec($ch);
curl_close($ch);

但是我认为它没有像我预期的那样工作。例如,如果我发送请求的 URL 有错误,它也会导致我的脚本抛出错误。如果是一劳永逸,我希望这种情况不会发生。

谁能告诉我我是否做错了什么或提供替代建议。我在本地使用 Windows,并在开发、登台和生产环境中使用 Linux。

UPDATE

我在这里找到了替代解决方案:http://blog.markturansky.com/archives/205 http://blog.markturansky.com/archives/205

我已将其清理为以下代码:

function curl_post_async($url, $params = array())
{
    // create POST string   
    $post_params = array();
    foreach ($params as $key => &$val) 
    {
        $post_params[] = $key . '=' . urlencode($val);
    }
    $post_string = implode('&', $post_params);

    // get URL segments
    $parts = parse_url($url);

    // workout port and open socket
    $port = isset($parts['port']) ? $parts['port'] : 80;
    $fp = fsockopen($parts['host'], $port, $errno, $errstr, 30);

    // create output string
    $output  = "POST " . $parts['path'] . " HTTP/1.1\r\n";
    $output .= "Host: " . $parts['host'] . "\r\n";
    $output .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $output .= "Content-Length: " . strlen($post_string) . "\r\n";
    $output .= "Connection: Close\r\n\r\n";
    $output .= isset($post_string) ? $post_string : '';

    // send output to $url handle
    fwrite($fp, $output);
    fclose($fp);
}

这个似乎更适合我。

这是一个有效的解决方案吗?


是的,如果您不关心所调用的 URL 的响应,则可以使用套接字。这是因为套接字连接可以在发送请求后立即终止,而无需等待,这正是您所追求的 - 即发即忘。

但有两个注意事项:

  1. 它不再是 cURL 请求,因此值得重命名该函数。 :)
  2. 绝对值得检查套接字是否可以打开,以防止脚本稍后在 if 失败时抱怨:

    $fp = fsockopen($parts['host'], $port, $errno, $errstr, 30);
    
    if ( ! $fp)
    {
       return FALSE;
    }
    

值得链接到您现在使用的 fsocket() 脚本的原始来源:
http://w-shadow.com/blog/2007/10/16/how-to-run-a-php-script-in-the-background/ http://w-shadow.com/blog/2007/10/16/how-to-run-a-php-script-in-the-background/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 忽略 POST 请求 的相关文章

  • PHP:是否可以从文件内容(字符串)创建 SplFileObject 对象?

    例如 contents file get contents image png 是否可以从 contents 创建 SplFileObject 对象 Thanks php 有一些特殊的流包装器 http www php net manual
  • 合并 csv 文件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在 PHP 或 joomla 中将多个 CSV 文件合并为一个 csv 文件 将文件夹中 csv 文件中的所有数据合并到文本文件中 通
  • 如何通过 PDO 使用密码哈希来使我的代码更安全? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我的代码实际上可以工作 但它一点也不安全 我不想使用 MD5 因为它不是那么安全 我一直在查找密码哈希 但我不确定如何将其合并到我的代
  • 从 json 数组获取值并执行 sql 插入

    这是我的数组 json 1 Device ID a9a3346be4375a92 Date 2012 05 31 Time 15 22 59 Latitude 51 4972912 Longitude 0 1108178 2 Device
  • 当用户再次访问同一页面时保持登录状态?

    目前我正在使用会话来登录用户 但是当我关闭浏览器并再次打开它时 我必须再次登录 你如何让用户在 2 周内保持登录状态 那么是通过cookie吗 那么您想要 在这台计算机上记住我 选项吗 这是一种与语言无关的方法 创建一个至少包含以下内容的数
  • 服务器响应中的“连接:保持活动状态”

    我正在尝试建立从 Silverlight 应用程序到 Apache 服务器托管的 PHP 页面的 HTTP 持久连接 即无需为每个 HTTP 请求创建新的 TCP 连接 为此 我需要网络服务器发送其 HTTP 响应 并将 Connectio
  • Ruby 中的任务/未来

    代表潜在延迟的异步计算并且可以订阅其完成的模式的惯用 Ruby 模拟是什么 即类似于 NET 的东西System Threading Task 或Python 3 xconcurrent futures future 请注意 这并不一定意味
  • 匹配括号内任何字符的正则表达式

    尝试创建一个与括号内的任何字符匹配的正则表达式 我的正则表达式模式是这样的 preg match listanswer answer 括号内的所有字符串都是匹配模式 但问题是 当我尝试匹配例如 this word sample data 它
  • Symfony 学说错误“DoctrineMigrationsBundle 需要启用 DoctrineBundle。”

    我创建了一个新的 Symfony 项目 并且不断收到此消息 DoctrineMigrationsBundle 需要启用 DoctrineBundle 错误并且无法摆脱它 显然我是这个星球上唯一一个收到此错误的人 因为谷歌并没有太大帮助 在
  • 从单个 javascript 函数向两个不同的 PHP 脚本发送两个 Ajax 请求

    是否可以同时向两个或多个 Php 脚本发送 Ajax 请求 我知道这可以串行实现 从 1 获取响应 然后从另一个获取响应 但我想知道是否可以同时实现 请协助我使用以下代码 function calShowUpload if http rea
  • “即发即忘”异步委托的正确方法

    就我而言 我对异步委托这个话题很生疏 如果我想以 一劳永逸 的方式异步调用一个方法 这是一种合适的方法吗 Action action DoSomething action BeginInvoke action EndInvoke null
  • PHP,文本从数据库中回显,没有换行,全部一体

    我的数据库中有一个长文本 从 php mayadmin 来看它看起来很好 但是当我将它回显到页面时 它会丢失所有格式 即没有新行 全部都在一个块中 有任何想法吗 Thanks 可能是因为换行符是 n 并且 html 想要 br 所以使用nl
  • 在 Laravel 中按数据透视表 create_at 排序

    在我的数据库中 我有以下表格 courses id 名称 创建时间 更新时间 students id 名称 创建时间 更新时间 课程 学生 id course id student id created at updated at 我正在尝
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 如何编写可以补偿拼写错误数据的 MySQL 搜索?

    有没有什么方法可以编写一个 MySQL 搜索来弥补用户在拼写等方面的错误 作为随机示例 有人可能会输入 电子邮件受保护 cdn cgi l email protection代替 电子邮件受保护 cdn cgi l email protect
  • 将价格格式设置为逗号分隔

    在我的数据库中 我有类似的值 256 23 200 33 89 33 133 45 我必须将这些值乘以千 然后将结果格式化为价格 逗号分隔 256 23 x 1000 256230 I want to show this as 256 23
  • 在 Windows 上查看 PHP 文件夹

    我正在编写一个简单的 PHP 脚本来监视文件夹及其子文件夹的任何更改 新文件 修改 删除 然后执行操作 我将使用 Windows 上的命令行运行此脚本php f script php 我一直在寻找一种在 Windows 上观看具有 PHP
  • Perl Parallel::Forkmanager 不允许收集变量值

    也许因为子进程不知道我的散列 请参阅下面的代码 散列 输出没有收集任何内容 除了写入 tmp 文件之外 还有其他方法来收集该值吗 foreach Item AllItems pid pm gt start Item and next Tem
  • PHP 文件上传帮助

    div align center div 这是我的代码
  • 使用 md5 加密的 PHP 和 Mysql 查询出现问题

    我使用普通的 php mysql 插入查询并使用 md5 加密密码 这是插入查询 sql mysql query INSERT INTO user username password role approved values usernam

随机推荐

  • Mailgun:使用解析云代码发送图像

    我有一个代码定义为 Parse Cloud define mailgunSendMail function request response var Mailgun require mailgun Mailgun initialize ph
  • 如何重定向到 root - public/index.html?

    我希望重定向到我的 application public 文件夹中的index html def get current user current user current user if current user nil redirect
  • jQuery animate() 和浏览器性能

    我有一些元素在页面上移动得非常缓慢 本质上 我在 40 秒左右的时间内减少了两个图像的左边距 从视觉上看 它的工作效果非常好 然而 在动画播放过程中 我的处理器使用率跃升至 50 左右 这也不特定于任何单一浏览器 Safari3 和 Fir
  • 如何在可编码结构中使用计算属性(swift)

    我创建了一个 可编码 结构来序列化数据集并将其编码为 Json 除了计算属性未显示在 json 字符串中之外 一切都运行良好 如何在编码阶段包含计算属性 Ex struct SolidObject Codable var height Do
  • 使用 Logback 但 Log4j 开始显示 WARN no Appenders

    我正在使用 logback 进行日志记录 但它一直在工作 前几天我开始收到警告 log4j WARN 找不到记录器 org apache axis i18n ProjectResourceBundle 的附加程序 log4j WARN 请正
  • 在 Flutter 中制作固定的应用程序范围菜单,而不是平板电脑上的抽屉

    我的应用程序有很多路线 几乎每条路线都使用带有相同抽屉菜单的 Scaffold 在应用程序内部导航 我自己的 CustomDrawer 小部件 对于大屏幕的设备 我希望始终在布局中显示左侧的菜单 而不是使用抽屉 它在Gmail应用程序中的工
  • 使用 Erlang,我应该如何在集群之间分配负载?

    我正在查看从属 池模块 它看起来与我的类似 想要 但似乎我的系统中存在单点故障 应用程序 如果主节点出现故障 客户端有一个网关列表 为了后备 全部都做 相同的东西 接受连接 并且从其中选择一个 由客户随机 当客户端连接所有节点时 检查哪个负
  • 在 Windows 上优雅地终止子 Python 进程,以便 Final 子句运行

    在 Windows 机器上 我有许多父进程将启动子进程的场景 由于各种原因 父进程可能想要中止子进程但是 这很重要 让它清理 即运行finally子句 try res bookResource doStuff res finally cle
  • 在 Erlang 中使用 mochijson2 解码 JSON

    我有一个包含一些 JSON 数据的 var A lt lt job id 1 gt gt 使用 mochijson2 我解码数据 Struct mochijson2 decode A 现在我有这个 struct lt lt job gt g
  • 使用 lambda 函数在 pandas group 中聚合

    我有一个聚合声明如下 data data groupby type status name agg one np mean two lambda value 100 value gt 32 sum reading mean test2 la
  • 如何将多个正则表达式组合成一行?

    我的脚本可以很好地执行此操作 images re findall src S media tumblr S tumblr S jpg doc videos re findall S http S video file S tumblr a
  • JavaScript 中的条形码扫描仪?或者插件/扩展

    我正在考虑将 USB 条形码扫描仪接口写入 Web 应用程序 离线应用程序 我的意思是扫描仪将位于客户端计算机而不是服务器上 所以我想知道最好的设计是什么 我知道我可以将 ActiveX 对象或本机插件写入某些浏览器 但这并不理想 有谁知道
  • 如何自动运行 ulimit -c unlimited

    我正在尝试从我的rootfs提供对coredump文件生成的支持 我已经使用 ulimit c unlimited 命令和 hard core 1 修改了 etc limits文件 现在当我给出kill 6 时 期望生成核心文件 但要获取此
  • 通过 REST 进行客户端-服务器同步

    这个问题是关于我认为 Android iOS 开发中非常常见的问题 但我还没有找到任何 标准 解决方案 假设我们有一个相当普通的 REST API 服务器数据库包含 除其他外 表countries and towns具有 1 N 关系 客户
  • CSS Masonry UI 使用“column-count”和“box-shadow”无法正常工作

    下面是我的代码砌体用户界面 我用的是纯CSS 如果有超过4 cards但如果我在下面使用它4 cards the column count 3 效果不佳 body height 1000px ul list style none moz c
  • shell中多个文件的平均值

    我想计算 15 个文件的平均值 ifile1 txt ifile2 txt ifile15 txt 每个文件的列数和行数相同 部分数据看起来像 ifile1 txt ifile2 txt ifile3 txt 3 5 2 2 1 2 1 3
  • 如何在Apple App Store产品描述中显示特殊字符?

    我发现一些应用程序 例如 Toodledo 使用复选标记来标记其修订历史记录 如何在 App Store 产品描述中显示 使用特殊字符 它允许 HTML 还是只需要使用 ascii 字符代码 有什么提示 技巧可以更好地展示我们应用程序的产品
  • 如何在 jqGrid 上实现自动换行(适用于 IE7、IE8 和 FF)

    如何在适用于 IE7 IE8 和 FF 的 jqGrid 上实现自动换行 同时还具有列大小调整功能 网格正确对齐 尝试使用特定宽度的 div 基于初始 TH 宽度 内包装每个 td 上的内容 但 colresize 不适用于我插入的 div
  • java.util.List 是可变的吗?

    我们可以add remove元素到List using add remove 方法而无需创建另一个看起来类似于的列表StringBuilder append 正因如此我认为List是可变的 谁能确认我的理解是正确的吗 如果有错误请解释一下下
  • PHP 忽略 POST 请求

    我正在尝试在 PHP 中创建一个即发即忘方法 以便我可以POST数据发送到网络服务器 无需等待响应 我读到这可以通过使用来实现CURL就像下面的代码一样 ch curl init url curl setopt ch CURLOPT POS