如何通过php的curl模拟ajax请求,获取其返回值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过php的curl模拟ajax请求,获取其返回值相关的知识,希望对你有一定的参考价值。

这个需要配合js,打开一个html页面,首先js用ajax请求页面,返回第一个页面信息确定处理完毕(ajax有强制同步功能),ajax再访问第二个页面。(或者根据服务器状况,你可以同时提交几个URL,跑几个相同的页面)
参数可以由js产生并传递url,php后台页面根据URL抓页面。然后ajax通过php,在数据库或者是哪里设一个标量,标明检测到哪里。由于前台的html页面执行多少时候都没问题,这样php的内存限制和执行时间限制就解决了。
因为不会浪费大量的资源用一个页面来跑一个瞬间500次的for循环了。(你的500次for循环死了原因可能是获取的数据太多,大过了php限制的内存)
不过印象中curl好像也有强制同步的选项,就是等待一个抓取后再执行下一步。但是这个500次都是用一个页面线程处理,也就是说肯定会远远大于30秒的默认执行时间。
参考技术A

楼主这个问题可以换种问法:《PHP 如何实现HTTP请求》


PHP实现HTTP请求的常规方法有以下几个:

    通过建立socket连接:可参考:http://php.net/manual/en/function.fsockopen.php;


    通过file_get_content(特殊请求需要自己构造http参数:cookie,referer等);


    通过PHP扩展(CURL,支持(批量)异步,支持自定义构造头);可参考:http://php.net/manual/en/context.curl.php


如果楼主有兴趣可以参考下我基于curl实现的HTTP请求类(放在github上):

特点:支持(批量)异步/同步请求(GET/POST)

地址:https://github.com/phpjungle/iHttp

本回答被提问者采纳
参考技术B 直接请求接口

CURL模拟POST请求实例

我们都知道可以通过表单的POST方法来提交数据给服务器,如图:

技术分享

然后,testPost.php的代码比较简单。只是将接受到的内容打印。

技术分享

得到这样的结果:

技术分享

但是,我们能不能通过其他方式来提交数据给到testPost.php呢。是可以的!那就是使用CURL模拟POST提交数据。文件(curlPost.php)代码如图:

技术分享

 

最后,我们来访问curlPost.php,也是可以得到相同的数据:

技术分享

以上是关于如何通过php的curl模拟ajax请求,获取其返回值的主要内容,如果未能解决你的问题,请参考以下文章

php curl如何直接转发当前php接收的headers?get请求如何直接转发get参数?post请求如何直接转发post参数?

通过 CURL 发送 ajax 请求

php curl请求接口并获取数据

如何在php中获取curl请求的请求头信息及相应头信息

PHP通过CURL模拟登录并获取数据

CURL模拟POST请求实例