这可能没有任何意义,但这就是我在这里的原因。我继承了一个网站,我正在尝试更多“功能”,像弗兰肯斯坦需要第二个左臂。
部分应用程序向全国各个服务提供商发出大约10个不同的API调用以获取报价。它通过生成几个不同的URL并使用mcurl并行获取它来实现此目的。这些都不返回任何html,它们每个都查询单个API并更新数据库。
运行需要几秒钟,在进行API查询时旋转其轮子,但数据库中没有任何内容更新。我可以在日志中看到所请求的每个URL。如果我把这些网址中的一个放在浏览器的地址栏中,它就可以了。调用api并更新数据库。
等等,还有更多!为了调试这些单独的脚本(因为它们没有输出),我使用fwrite()。这在我在浏览器的地址栏中使用URL时有效,但没有写入任何内容然后所有脚本都通过mcurl执行。 (准确地说多个curl_execute()。)简而言之,当php使用curl执行脚本时,它不会更新mysql数据库,也不会允许我打开文件。如果我将GET请求从日志中剪切/粘贴到浏览器的地址栏中,这些都可以。
现在这个软件已经在现场工作了一段时间,并按预期为他们工作。我正在我的本地机器上进行开发,这就是它失败的地方。它只是非常简单。
- 戴夫
答案 0 :(得分:0)
它必须是HTTP头中的内容,随请求一起发送。
如果您可以访问Web服务的代码(在帖子中没有提到),您可以转储该方的标题,将其写入文件或通过电子邮件发送,并查看mcurl调用之间的区别和浏览器调用。
$_SERVER
数组包含它们,其名称前缀为“HTTP ”。
另一个想法是在客户端窃听它,mcurl或浏览器来自哪里,虽然我坦率地不确定如何在不嗅探网络的情况下这样做。