php使用curl实现ftp文件下载功能实例代码
本文实例为大家分享了php实现ftp文件下载功能,供大家参考,具体内容如下
不知道为什么用正常的ftp_get函数下载文件速度特别慢,但是用ftp的客户端下载很快,所以换了curl的下载方式,速度正常
代码如下 | 复制代码 |
functionfile_upload($ftpIp,$ftpUser,$ftpPwd,$path,$fileSavePath){ $curlobj= curl_init();//初始化 //传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg' curl_setopt($curlobj,CURLOPT_URL,"ftp://".$ftpIp."/".$path); curl_setopt($curlobj,CURLOPT_HEADER,0);//不输出header curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,0); //time out after 300s curl_setopt($curlobj,CURLOPT_TIMEOUT,2000);//超时时间 //通过这个函数设置ftp的用户名和密码,没设置就不需要! curl_setopt($curlobj,CURLOPT_USERPWD,$ftpUser.':'.$ftpPwd);
$outfile=fopen($fileSavePath,'w+');//保存到本地文件的文件名 curl_setopt($curlobj,CURLOPT_FILE,$outfile);
$rtn= curl_exec($curlobj); if(curl_errno($curlobj)){ writeLog('Curl error: '. curl_error($curlobj)); } fclose($outfile); curl_close($curlobj); if($rtn== 1){ returntrue; }else{ unlink($fileSavePath);//如果下载失败,但是本地open了这个文件,所以要删除 returnfalse; }
} |
测试下载小文件是正常的,但是如果网速很慢,下载大文件时候,会报一个ftp timeout的错误,目前还在不知道是哪里配置问题,还是什么问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。
本篇文章主要介绍了利用PHPExcel读取Excel的数据和导出数据到Excel的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧PHPExcel是一个PHP类库,用来帮助我们简单、高效实现从Excel读取Excel的数据和导出数据到Excel。也是我们日常开发中,经常会遇到的使用场景。比如有个客户信息表,要批量导出发给同事,我们就可以用PHPExcel来快速实现。同样,如果我们要利用短信群发接口去群发信息,PHPExcel可以快速导入客户信息,避免人工录入信息的麻烦。
PHPExcel使用教程:
首先下载PHPExcel
到https://github.com/PHPOffice/PHPExcel下载PHPExcel,如果不懂得使用git,可以到这https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8下载压缩包,懂得的自行用git下载。
下载好文件,解压可以得到如下文件:
PHPExcel
好了,现在我们就可以用PHPExcel愉快的读取和制作表格了!
PHPExcel DEMO1:利用PHPExcel读取excel信息:
我们在根目录创建一个名为read.php的文件来读取文档,创建一个test.xlsx的文件,里面写的信息如下:
然后在read.php写以下代码:
代码如下 | 复制代码 |
<?php include‘./Classes/PHPExcel/IOFactory.php'
$inputFileName= ‘./test.xls' date_default_timezone_set(‘PRC'); // 读取excel文件 try{ $inputFileType= PHPExcel_IOFactory::identify($inputFileName); $objReader= PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel=$objReader->load($inputFileName); }catch(Exception$e) { die(‘加载文件发生错误:”‘.pathinfo($inputFileName,PATHINFO_BASENAME).'”: ‘.$e->getMessage()); }
// 确定要读取的sheet,什么是sheet,看excel的右下角,真的不懂去百度吧 $sheet=$objPHPExcel->getSheet(0); $highestRow=$sheet->getHighestRow(); $highestColumn=$sheet->getHighestColumn();
// 获取一行的数据 for($row= 1;$row<=$highestRow;$row++){ // Read a row of data into an array $rowData=$sheet->rangeToArray(‘A' . $row . ‘:'.$highestColumn.$row, NULL, TRUE, FALSE); //这里得到的rowData都是一行的数据,得到数据后自行处理,我们这里只打出来看看效果 var_dump($rowData); echo“ } |
得到的数据:
PHPexcel读取文件
PHPExcel DEMO2:利用PHPExcel导出信息到excel:
代码如下 | 复制代码 |
<?php
/** Error reporting */ error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('PRC');
/** 引入PHPExcel */ require_oncedirname(__FILE__) .'./Classes/PHPExcel.php'
// 创建Excel文件对象 $objPHPExcel=newPHPExcel(); // 设置文档信息,这个文档信息windows系统可以右键文件属性查看 $objPHPExcel->getProperties()->setCreator("作者简庆旺") ->setLastModifiedBy("最后更改者") ->setTitle("文档标题") ->setSubject("文档主题") ->setDescription("文档的描述信息") ->setKeywords("设置文档关键词") ->setCategory("设置文档的分类");
//根据excel坐标,添加数据 $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1','你好') ->setCellValue('B2','世界') ->setCellValue('C1','你好') ->setCellValue('D2','世界');
// 混杂各种符号, 编码为UTF-8 $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A4','Miscellaneous glyphs') ->setCellValue('A5','éàèùâêîôûëïüÿäöüç');
$objPHPExcel->getActiveSheet()->setCellValue('A8',"你好世界"); $objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1); $objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true);
$value="-ValueA\n-Value B\n-Value C"; $objPHPExcel->getActiveSheet()->setCellValue('A10',$value); $objPHPExcel->getActiveSheet()->getRowDimension(10)->setRowHeight(-1); $objPHPExcel->getActiveSheet()->getStyle('A10')->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->getStyle('A10')->setQuotePrefix(true);
// 重命名工作sheet $objPHPExcel->getActiveSheet()->setTitle('第一个sheet');
// 设置第一个sheet为工作的sheet $objPHPExcel->setActiveSheetIndex(0);
// 保存Excel 2007格式文件,保存路径为当前路径,名字为export.xlsx $objWriter= PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007'); $objWriter->save('export.xlsx'); // 保存Excel 95格式文件,,保存路径为当前路径, $objWriter= PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); $objWriter->save('export.xls'); |
好了,执行后我们可以得到export.xls和export.xlsx。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本网站!
这篇文章主要为大家详细介绍了使用WAMP搭建PHP本地开发环境的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下写在前面的话
PHP是服务器脚本语言,所以需要在服务器上才能运行。作为新手,搭建服务器可能需要捣腾很久,有可能还搞不定。所以在入门阶段,为了把更多时间用在熟悉编程语言上,使用集成环境是最好也是最方便的选择。而本文就来介绍如何在windows平台搭建PHP开发环境。
安装集成环境
1、下载集成环境包WampServer官网
本人下载的是Wampserver 3.0.6 64 bit ,下载完成之后双击安装即可。
wamp 3.0.6 安装的软件分别为:
Apache 2.4.23
PHP 5.6.25/7.0.10
MySQL 5.7.14
PhpMyAdmin 4.6.4
Adminer 4.2.5
PhpSysInfo 3.2.5
* apache 2.4及以上版本与2.4以下版本的配置会有些不同
* wamp会同时安装PHP5和PHP7,安装完成之后可以进行切换使用
2、安装过程出现错误
若安装过程中出现提示缺少 msvcr110.dll 等文件,请先下载vcredist_x64.exe安装wamp所需环境。
服务器配置
1、项目路径
安装好wamp后,在安装路径下有个www文件夹,该文件夹用于存放你的项目文件,在这个目录下的文件才会被服务器识别和执行。
例如:我安装wamp时选中的目录为
D:\wamp64
则安装后的存放项目文件目录为
D:\wamp64\www
当然,如果不想使用默认的www文件夹,也可以修改apache配置,指定目录让服务器解析。
在安装目录下找到apache的配置文件httpd.conf
安装目录\bin\apache\apache2.4.23\conf\httpd.conf
使用记事本或者其他编辑器打开文件,找到
代码如下 | 复制代码 |
DocumentRoot "${INSTALL_DIR}/www" ... |
把${INSTALL_DIR}/www修改为需要指定的目录
然后,同样在该目录中找到httpd-vhosts.conf文件
代码如下 | 复制代码 |
extra\httpd-vhosts.conf
#打开文件↓
ServerName localhost DocumentRoot D:/wamp64/www ...
|
修改D:/wamp64/www为需要指定的目录即可。这样以后服务器就会解析这个目录下的文件了。
*修改配置之后要记得重启服务器
2、测试
新建一个项目测试服务器是否可用。
在www文件夹下新建一个test文件夹,文件夹中新建一个test.php,php文件中写上一些输出语句。例如程序员入门必写的一句话:
echo 'Hello World!'
之后打开浏览器,在地址栏输入
localhost/test/test.php
如果你的浏览器有显示Hello World!字样,就说明你的服务器可以使用了。
3、配置虚拟主机
不喜欢以localhost/项目文件名/xxx.php/…这种方式进行访问?那可以配置虚拟主机,配置后可以通过类似www.test.com(可自定义)这种形式访问。
首先找到httpd-vhosts.conf文件并打开
安装目录\bin\apache\apache2.4.23\conf\extra\httpd-vhosts.conf
在文件末尾添加
代码如下 | 复制代码 |
#设置主机名(可自己设置) ServerName www.test.com #设置主机别名,即用该别名也可以访问(前提是域名解析正确) ServerAlias test.com #设置该站点根目录 DocumentRoot "D:\wamp64\www\test" #设置文件夹访问控制,其路径要和上一行的DocumentRoot一样, #用于显示设定“可显示文件列表”(当无可显示网页的时候) Options Indexes #启用文件夹访问控制的文件.htaccess设置 AllowOverride All #请求控制 Require all granted #默认打开的页面设置 DirectoryIndex index.php index.html
|
然后,找到hosts文件,win10的hosts文件路径为:
代码如下 | 复制代码 |
C:\Windows\System32\drivers\etc #每个系统都不一样,可以去问问百度 |
在文件末尾处添加127.0.0.1www.test.com(注意中间的空格不要丢),保存。
*如果保存提示另存为的话,可以先另存为,然后修改另存为的文件名为hosts,覆盖掉原来的hosts文件
代码如下 | 复制代码 |
... # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a'#'symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost
127.0.0.1www.test.com |
修改hosts的目的是为了在浏览器访问时,系统不会把域名(www.test.com)提交到DNS服务器,而是直接根据hosts文件找到IP地址(此时是本地),提交解析。这样我们本地的服务器就可以解析这个域名了。
4、局域网远程访问
如果需要在局域网中能通过链接访问站点(例如开发web app时使用手机测试),那么就需要开启服务器远程访问权限了。
打开apache配置文件httpd.conf
安装目录\bin\apache\apache2.4.23\conf\httpd.conf
修改AllowOverride和Require配置为如下
代码如下 | 复制代码 |
DocumentRoot "${INSTALL_DIR}/www" ... AllowOverride all Require all granted ... |
同时需要修改httpd-vhosts.conf文件,修改相同的配置
代码如下 | 复制代码 |
ServerName localhost DocumentRoot D:/wamp64/www ... AllowOverride All Require all granted
|
若只需要访问其中某一个站点,则首先需要给这个站点配置虚拟主机,然后在该虚拟主机的配置中修改AllowOverride和Require
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。
这篇文章主要介绍了PHP 实现浏览记录并按日期分组的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下现有测试数据如下,要求实现如下图中的效果:
代码如下 | 复制代码 |
array(4) { [0] =>array(6) { ["visit_id"] => int(127) ["goods_id"] => int(16) ["visittime"] => int(1494399935) ["goods_name"] => string(53)"OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金" ["shop_price"] => string(6)"500.00" } [1] =>array(6) { ["visit_id"] => int(124) ["goods_id"] => int(13) ["visittime"] => int(1494399921) ["goods_name"] => string(76)"SIEMENS/西门子 KA92NV09TI双开门家用对开门电冰箱变频旗舰款" ["shop_price"] => string(7)"4000.00" } [2] =>array(6) { ["visit_id"] => int(123) ["goods_id"] => int(27) ["visittime"] => int(1494399903) ["goods_name"] => string(85)"爱他美白金版Aptamil 幼儿配方奶粉3段(12-36个月适用)900g(欧洲进口)" ["shop_price"] => string(6)"329.00" } [3] =>array(6) { ["visit_id"] => int(120) ["goods_id"] => int(26) ["visittime"] => int(1494224263) ["goods_name"] => string(21)"欢乐谷免票一张" ["shop_price"] => string(5)"50.00" } } |
还没实现之前我想这个代码不知道要O(n)呢还是更高的复杂度才能实现,细想一下,其实php的数组底层就是哈希实现的,如何简单利用这个特性使复杂度降到O(1)呢?
代码如下 | 复制代码 |
show me the code: /* 浏览记录按日期分组 */ functiongroupVisit($visit) { $curyear=date('Y'); $visit_list= []; foreach($visitas$v) { if($curyear==date('Y',$v['visittime'])) { $date=date('m月d日',$v['visittime']); }else{ $date=date('Y年m月d日',$v['visittime']); } $visit_list[$date][] =$v; } return$visit_list; } |
说明:入参 $visit 就是上面一开始的测试数据,函数中还对用户体验做了一些优化,比如,你的浏览记录中总是显示出今年的年份,是不是感觉有点冗余,所以如果是本年份的话,年份就要隐藏起来,其他年份还是照样显示出来。不然代码会更加简洁。
好了上面的测试数据经过该函数之后,再把返回值打印出来,有:
代码如下 | 复制代码 |
array(2) { ["05月10日"] =>array(3) { [0] =>array(6) { ["visit_id"] => int(127) ["goods_id"] => int(16) ["visittime"] => int(1494399935) ["goods_name"] => string(53)"OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金" ["shop_price"] => string(6)"500.00" } [1] =>array(6) { ["visit_id"] => int(124) ["goods_id"] => int(13) ["visittime"] => int(1494399921) ["goods_name"] => string(76)"SIEMENS/西门子 KA92NV09TI双开门家用对开门电冰箱变频旗舰款" ["shop_price"] => string(7)"4000.00" } [2] =>array(6) { ["visit_id"] => int(123) ["goods_id"] => int(27) ["visittime"] => int(1494399903) ["goods_name"] => string(85)"爱他美白金版Aptamil 幼儿配方奶粉3段(12-36个月适用)900g(欧洲进口)" ["shop_price"] => string(6)"329.00" } } ["05月08日"] =>array(1) { [0] =>array(6) { ["visit_id"] => int(120) ["goods_id"] => int(26) ["visittime"] => int(1494224263) ["goods_name"] => string(21)"欢乐谷免票一张" ["shop_price"] => string(5)"50.00" } } } |
对的,这正是我想要的效果。
以上所述是小编给大家介绍的PHP 实现浏览记录并按日期分组,希望对大家有所帮助。在此也非常感谢大家对本网站的支持!
相关文章
- 下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
Jupyter Notebook读取csv文件出现的问题及解决
这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06- 有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
- 这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
php无刷新利用iframe实现页面无刷新上传文件(1/2)
利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25- 要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
- 又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
- 步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
- 今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
- 这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
- 本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
ant design中upload组件上传大文件,显示进度条进度的实例
这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29- 这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
- 举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07
- 这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 通常php.ini的位置在:复制代码 代码如下:/etc目录下或/usr/local/lib目录下。如果你还是找不到php.ini或者找到了php.ini修改后不生效(其实是没找对),请使用如下办法:1.新建php文件,写入如下代码复制代码 代码如下:<?phpe...2014-05-31
- 分享给大家php判断上传文件类型的方法,大家一起学习学习。/** * 读取文件前几个字节 判断文件类型 * @return String */ function checkTitle($filename){ $file=fopen($filename, "rb"); $bin=fread($file, 2); /...2015-10-21