【发布时间】:2012-12-30 20:40:30
【问题描述】:
我想要从 PHP 发送一个 HTTP GET 请求。示例:
http://tracker.example.com?product_number=5230&price=123.52
这个想法是做服务器端的网络分析:而不是发送跟踪 信息从 JavaScript 到服务器,服务器发送跟踪 信息直接发送到另一台服务器。
要求:
请求应该花费尽可能少的时间,以便不 明显延迟 PHP 页面的处理。
-
tracker.example.com的回复不需要是 检查。例如,一些可能的回应来自tracker.example.com:200:没关系,但不需要检查。
404: 运气不好,但是 - 再次 - 不需要检查。
301: 虽然重定向是合适的,但它会延迟 PHP页面的处理,所以不要这样做。
简而言之:所有响应都可以被丢弃。
解决方案的想法:
在现已删除的答案中,有人建议调用命令行 curl 在 shell 进程中来自 PHP。这似乎是个好主意, 只是我不知道是否在下分叉了很多shell进程 负重是明智之举。
我找到了php-ga,一个做服务器端谷歌的包 来自 PHP 的分析。在项目的页面上,它是 提到:“可以配置为 [...] 使用非阻塞请求。” 到目前为止我还没有找到时间研究什么方法 php-ga 内部使用,不过这个方法可以!
简而言之:做通用服务器端的最佳解决方案是什么 来自 PHP 的跟踪/分析。
【问题讨论】:
-
madflow:因为在跟踪中不应减慢页面加载时间。如果跟踪器失败,那么运气不好 - 但不需要每次都检查。
-
@Will:请注意,我要求的是一个方法,而不一定是一个包。例如,php-ga 用于执行非阻塞请求的方法可能也适用于跟踪解决方案,例如在我的情况下,不基于 Google Analytics。
-
@Will:有一个可以确定的答案,但这需要更多关于可能的性能问题的讨论。不幸的是,它已被删除。这个想法是从 PHP 调用命令行
curl。如果有链接,我相信它可以删除。curl是标准 UNIX Web 服务器工具链的一部分(顺便说一下,curllib可以通过 PHP 访问)。此外,一旦我找到时间,我想研究一下 php-ga 并研究用于非阻塞请求的 method。但也许 Stack Overflow 上的某个人知道这一点? -
@feklee 抱歉让您久等了,做出了回答(对内容不是很自豪)。如果您愿意,我可以编辑并提供更多信息(可能是一些代码示例)。我从周五晚上开始回答,但最终让位于大量信息(以一种不太结构化的方式)。
-
可能有用:segment.io/blog/how-to-make-async-requests-in-php 和 Asynchronous PHP calls?/(也许第二个甚至是重复的?以后会看更多。)
标签: php http curl server-side web-analytics