首页 开发编程 正文

怎么老是下载php PHP下载网络资源文件呢

PHP下载网络资源文件?引言在程序内下载资源文件,在实际中我们一般要避免在程序流程中下载文件。学习时间最直接的办法就是使用内置函数file_get_contents。习惯于使用这一个函数进行网络请求呢!使用feof判断文件是否到尾部。下面我们使用cURL库进行文件请求操作:使用网络请求下载大文件,写在最后本文通过3中方法对比了实现小文...

怎么老是下载php,PHP下载网络资源文件?

引言

在程序内下载资源文件,这本身就是一个充满了不确定因素的事情。可能会因为网络超时连接中断,或者程序故障抛出各种异常,在实际中我们一般要避免在程序流程中下载文件。

如果是实在无法避免,用什么办法比较高效呢?或者说比较轻量级呢?本文就来说一说。

学习时间

最直接的办法就是使用内置函数 file_get_contents。参数形式如下:

int file_put_contents( string $filename, mixed $data[, int $flags = 0[, resource $context]] )

这个函数设计的很巧妙,兼容了很多场景下的使用。我们只需要按照相应的参数填入,就可以组装出各种各样的功能。

如果是下载资源,那么会分为两步。第一,把远程资源拿到本地。第二,把该资源写入本地文件。使用代码实现如下:

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));

其中在位置参数 $data 的位置,传入了一个fopen生成的文件句柄。

根据函数手册上所说,如果$data 指定的是流,则该流的缓冲区将被复制到指定的文件。对标的函数是 stream_copy_to_stream。那样写起来就得是这样的:

是不是没有file_put_contents精简。难怪很多敲代码的老司机,习惯于使用这一个函数进行网络请求呢!

文件操作

纯粹使用文件操作,也没有问题,使用PHP提供的 fopen fclose fwrite fread 等函数,完全可以胜任。我们将其封装为一个助手函数:

因为不能确定原始文件的长度,在读写的时候,需要注意缓存区的大小,分块读入和写入。其中参数 1024 * 8,指定每次读写 8K 字节。使用 feof 判断文件是否到尾部。

网络请求

既然是网络资源文件,使用上面的函数,无非都要发起 HTTP 请求。既然是网络请求,何不把这个功能交给 cURL 呢?这样对于请求头,请求体,响应体等等全程 HTTP 环节,都可以在程序内操作,容错性肯定不差。

下面我们使用 cURL 库进行文件请求操作:

如果是小小的资源文件,下载起来不费时间,也不会阻碍接下来的流程。如果是超大文件,费时间,而且还可能中断,有没有断点续传?有没有自动压缩?这都是问题。

所以,使用网络请求下载大文件,这已经超出了 PHP 内置函数的范畴。我们需要功能更为强大的下载器,多资源,多线程,断线续传,自动重试。

写在最后

本文通过3中方法对比了实现小文件下载的功能,各有优劣,根据不同的场景需要开发者做出适当的选择。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

夏有天狼手机版怎么安装?

1.

首先打开手机浏览器

2.

再点击下面的四个点

3.

然后点击下载管理

4.

再点击打开按钮

1. 网页的右上角点击注册,注册完后,登入网站

2. 解除限制。还是点击网站右上角,有你用户名的地方,在弹出的菜单框里选择Control Panel(第一个)进入到修改限制内容的页面,在转到的页面下面用户头像上

3. 搜索作者,输入kay,或者搜索游戏名。购买10H币(60元)的那个商品即可下载游玩 (支持支付宝)

网站出现502BADGATEWAY是怎么回事?

出现打开网站有时出现502 Bad Gateway这种情况,可以才去刷新操作解决问题。 所谓刷新其实就是从服务器下载数据到本地的硬盘浏览器,再从本地硬盘种读取数据到浏览器显示给我们看。 如果你重新直接点击你想要浏览的网页链接,你会发现刚才还是显示502 bad getway的页面现在又可以正常浏览了!当你点击你想要浏览的网页链接的时候,是会从服务器重新下载数据的。 解决方法就是从服务器上刷新:快捷键 ctrl+F5,这样就是重新向服务器发送请求了。 最后可以尝试一下清理浏览器缓存。 502 Bad Gateway是一种报错提示,这一错误不代表上游服务器关闭了,而是上游服务器和网关/代理不同意的协议交换数据。 会出现这种现象有以下几个原因:

1. 在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。

2. 在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway

3. 在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502。

4. php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time改为300。

5. 磁盘空间不足,如mysql日志占用大量空间。

6. 查看php-cgi进程是否在运行。

如何使用phpstudy操作管理phpmyadmin?

1、首先我们需要下载安装好phpstudy,下载安装教程在我的上一个经验中,然后我们点击启动按钮。

2、启动之后我们需要打开我们的phpmyadmin,这时候我们点击mysql管理器,选择phpmyadmin,点击打开

3、打开之后我们会看到这样一个登录界面,这个帐号和密码是由phpstudy这个软件默认的,帐号和密码都是root,我们正确输入后点击登录

4、登陆之后我们就可以进行管理我们的PHPmyadmin了,如果想要新建一个数据库的话,点击左上角的数据库,然后输入想要创建的数据库名称,选择格式,点击创建就可以了

5、如果想要创建一个数据表的话,就点进一个数据库,然后输入数据表名称和字段,点击新建就可以新建数据表了。

6、PHPmyadmin是一个非常好用的数据库的管理方式,大家可以多研究一下

phpStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin+ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。

phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。

PHP全栈开发工程师是做什么的?

php 网页开发语言,主要与mysql数据库进行通信,及网页数据处理工作 追问: 就只有这些吗 ? 那发展前景你觉得怎样 回答: 主要是做这些的,PHP前景不错啊,给PHP开源的人很多,个人觉得ASP火的原因是因为那是微软支持的,但是很多程序ASP的代码比PHP的代码多、复杂,这样导致的后果就是漏洞多!而PHP相对JSP简单,如果要学JSP,也建议先从PHP入手! 追问: 我学的是java 想看看PHP的怎么样 回答: PHP相对后台语言来说是比较简单的,适合入门! 追问: PHP适合做前台 大型的开发做的来不 回答: 汗,PHP是做后台的,主要是做网站后台的! 追问: 哦```` 回答: 告诉你一下ASP,HTML,PHP,JXP有什么区别!首先,就代码而言,html是基本的;jsp,asp,php文档都以html为基础,只是用程序代码动态输出html代码,特点是同一文档根据不同情况可以输出不同的html代码。jsp,asp,php文档都要经过编译后生成html代码,也就是我们在浏览器中看到的结果,不同之处在于jsp是一般浏览器都能编译的,asp和php需要服务器支持,另外cgi也需要服务器支持。 从编程角度看,asp和php都可以支持多充语言编程,可以javascript,vbscript或者perl等等,甚至可以混合语言编程。 不能简单从扩展名判断其文档类型!应该从服务器和源代码来判断。里面有<%...%>的一般是asp文档,里面有$的一般是php文档。由于一般asp和php都有限制,所以在浏览器中采用查看源代码或者直接下载该文档的方法都是看不到真正源代码的,只能看到源代码运行后生成的html,真正得到源代码恐怕只能攻击并pj服务器:( aspx与asp类似,只是支持.net,在开发中更方便,功能更强大。

本文转载自互联网,如有侵权,联系删除