在nginx下导出数据库数据

Posted 隆冬之夜99

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在nginx下导出数据库数据相关的知识,希望对你有一定的参考价值。

首先上干货 解决问题

set_time_limit(0); //设置脚本运行时间为不限制  因为php脚本默认时间为30秒
ini_set(‘memory_limit‘, -1); //取消脚本运行内存限制 如果你的数据量大且需要处理
error_reporting(E_ALL);  //把报错打开吧 有些数据是不是有错误

echo ‘name,phone,age,content‘;  //设置表格表头
echo "\n";
//这里是关联数组 一般数据库数据格式 替换为自己的数据就好
$data = array(
    0=>array(‘name‘=>‘张三‘,‘phone‘=>‘18236666666‘,‘age‘=>‘18‘,‘content‘=>‘这是一段文字,带逗号需要处理‘),  
    1=>array(‘张三‘,‘18236666666‘,‘18‘,"这是一段文字,(\r\n)换行需要处理"),  
);

foreach($data as $v){
      $text = iconv(‘utf-8‘,‘gb2312‘,$val[‘memo‘]);  //处理中文乱码
      $text =str_replace(array("\r\n", "\r", "\n"), "",$text);  //处理文本中换行符
      $text =str_replace(array(","), "",$text);  //处理英文格式下的"," 因为输出是根据,隔开单元格
      echo $v[‘name‘].‘,‘.$v[‘phone‘].‘,‘.$v[‘age‘].‘,‘.$text; //输出数据
      echo "\n";
}

然后在nginx下找到脚本执行命令

 php csv.php > your.csv

  下面是介绍原理
set_time_limit (秒数) 返回bool值
设置允许脚本运行的时间,单位为秒。如果超过了此设置,脚本返回一个致命的错误。默认值为30秒,或者是在 php.ini 的 max_execution_time 被定义的值。
参数最大的执行时间,单位为秒。如果设置为0(零),没有时间方面的限制。
如果你的数据量很大很大 那么脚本会跑很久 所以执行时间是需要设置一下的

ini_set()  用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置,对于虚拟空间来说,很方便。

脚本中使用了 ini_set(‘memory_limit‘, ‘64M‘); 设定一个脚本运行是能够申请到的最大内存字节数,如果一个脚本中需要处理很大的数据那么这个值就需要设置了ini_set(‘memory_limit‘, -1);表示不限制内存

函数注意:

干货来了1:

看手册:技术分享图片

可修改范围是PHP_INI_PERDIR,你可能不知道这是什么意思(参考:http://blog.csdn.net/bravezhe/article/details/18351975)

 

PHP总共有4个配置指令作用域:(PHP中的每个指令都有自己的作用域,指令只能在其作用域中修改,不是任何地方都能修改配置指令的)

PHP_INI_PERDIR:指令可以在php.ini、httpd.conf或.htaccess文件中修改

PHP_INI_SYSTEM:指令可以在php.ini 和 httpd.conf 文件中修改

PHP_INI_USER:指令可以在用户脚本中修改

PHP_INI_ALL:指令可以在任何地方修改

 

干货来了2:

     开启了安全模式:代码一同样是无效的。

     自己在php version = ‘5.3.3‘上测试发现ini_set(‘safe_mode‘,true);无效

     需要在php.ini下修改:

  技术分享图片

 

干货来了3:

        修改代码二的方法:

        在.htaccess文件中直接加上

  1. php_value upload_max_filesize "3M"  

 

摘记链接 细说ini_set(); http://blog.csdn.net/littlebo01/article/details/45199161

输出csv文件

在脚本中直接echo 用英文标点 "," 来划分单元格列; 用 "/n" 来划分单元格行
用nginx下输出命令 ">" 将echo出来的文本输出到1.csv文件

php this.php > 1.csv

 

  这里提一下 很方便

 iconv(‘utf-8‘,‘gb2312‘,$val[‘memo‘]);//用来解决utf-8文字乱码问题 

  

 














以上是关于在nginx下导出数据库数据的主要内容,如果未能解决你的问题,请参考以下文章

linux服务下使用nginx之后数据导出超时

pg导入导出csv

nginx 代理请求导出功能bug解决方法

[搬运] 将 Visual Studio 的代码片段导出到 VS Code

Nginx日志数据的清洗,及所需数据的汇总与导出存储

从SQL Server数据库导出SQL语句