php使用socket获取远程图片
来源:互联网 发布:淘宝平台费用是多少 编辑:程序博客网 时间:2024/05/20 10:11
步骤:
1,匹配URL中的主机名和文件部分
2,创建socket并连接到目标服务器
3,构造HTTP请求并发送
4,读取HTTP响应并解析
5,保存内容到文件并关闭socket连接
代码实现如下:
- <?php
- /*
- * 使用socket获取远程资源(网页,图片等)
- * url 资源URL
- * savepath 资源的保存路径
- * return true/false
- */
- function get_remote_picture($url,$savepath="./"){
- set_time_limit(0);
- $pattern = '/(http:\/\/)?([^\/]+)(.+)/';
- $res = preg_match($pattern, $url, $matches);
- if($res == 0){
- return false;
- }
- $host = "";//主机名
- $file = "";//请求的文件
- if(count($matches) == 3){
- $host = $matches[1];
- $file = $matches[2];
- }else if(count($matches) == 4){
- $host = $matches[2];
- $file = $matches[3];
- }else{
- return false;
- }
- $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
- $res = socket_connect($socket,gethostbyname($host),80);
- if(!$res){
- //echo socket_strerror(socket_last_error($socket));
- socket_close($socket);
- return false;
- }
- $request = "";
- $request .= "GET $file HTTP/1.1\r\n";
- $request .= "Host: $host\r\n";
- $request .= "Connection: close\r\n\r\n";
- $len = socket_write($socket,$request);
- $response = "";
- while($buf=socket_read($socket,512)){
- if(strlen($buf) == 0){
- break;
- }
- $response .= $buf;
- }
- if(strpos($response,"\r\n\r\n")){
- $arr = explode("\r\n\r\n",$response);
- if(!file_exists($savepath)){
- @mkdir($savepath);
- }
- $savepath = rtrim($savepath,'/').'/';
- file_put_contents($savepath.basename($file),$arr[1]);
- }else{
- socket_close($socket);
- return false;
- }
- socket_close($socket);
- return true;
- }
- /* 获取百度logo */
- $url = "http://su.bdimg.com/static/superplus/img/logo_white.png";
- $result = get_remote_picture($url);
- if($result){
- echo 'get remote picture success';
- }else{
- echo 'get remote picture failed';
- }
0 0
- php使用socket获取远程图片
- php使用socket获取远程图片
- php使用socket获取远程图片
- php使用curl来获取远程图片
- php远程获取图片
- php 获取远程图片
- Php远程获取图片类
- 使用PHP采集远程图片
- php获取远程图片并保存本地
- PHP 远程图片获取到本地
- PHP: 获取远程图片的大小
- php获取远程图片存储到本地
- php 获取远程图片的一个方法
- PHP获取远程图片保存到本地
- php 使用GD库下载远程图片
- 使用PHP实现采集远程图片功能
- 使用PHP实现采集远程图片功能
- 自定义glide数据源,使用socket获取图片
- 子节点的位置与父节点位置的关系
- JQuery处理json 与 ajax返回JSON实例
- CoAP协议及开源实现
- JBOSS安装配置详细教程
- memcache学习笔记
- php使用socket获取远程图片
- Java Socket编程
- ActionBar和DrawerLayout纯原生控件,实现侧滑栏和滑动Tab界面
- 工作一年辞职了,开启创业之路
- mt.exe : general error c101008a: Failed to save the updated manifest to the file "demo.dir\Debug\npd
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- ucos-ii示例6:消息量集测试
- JMeter压力测试使用入门
- c++ operator的两种应用