如何通过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参数?