第一百零一次闯荡江湖的无名游侠 - 2022年5月
type: channel
link: http://diyibailingyici.chuangdangjianghudewumingyouxia.cn/2022/05/
description: 英雄願望 〜アルゴイゥ卜~
items: PHP快速导出百万级数据到CSV或者EXCEL文件
items: Linux 系统目录结构
items: Linux系统中查看磁盘可用空间的5个命令
items: mysql删除日志文件_mysql删除日志文件，定时清理日志
items: js 脚本监听浏览器打开控制台

PHP快速导出百万级数据到CSV或者EXCEL文件
type: item
date: 2022-05-23T09:35:00+08:00
description: 前言： 很多时候，因为数据统计，我们需要将数据库的数据导出到Excel等文件中，以供数据人员进行查看，如果数据集不大，其实很容易；但是如果对于大数集的导出，将要考虑各种性能的问题，这里以导出数据库一百万条数据为例，导出时间不过20秒，值得学习的一种大数据导出方式。2.导出思路需要考虑服务器内存需要考虑程序运行的最大时间缺少BOM头导致乱码的处理如果导出数量过大，推荐使用循环导出，每次循环这里以导出一万条为例，循环100次即可全部导出3.导出源码下面源码将数据库信息修改成自己的即可使用亲测导出一百万条数据，3个字段，不过20秒如果服务器硬件不支持一次读取一万条数据，可将循环次数提高，导出数量降低 //让程序一直运行 set_time_limit(0); //设置程序运行内存 ini_set('memory_limit', '128M'); $fileName = '测试导出数据'; header('Content-Encoding: UTF-8'); header("Content-type:application/vnd.ms-excel;charset=UTF-8"); header('Content-Disposition: attachment;filename="' . $fileName . '.csv"'); //打开php标准输出流 $fp = fopen('php://output', 'a'); //添加BOM头，以UTF8编码导出CSV文件，如果文件头未添加BOM头，打开会出现乱码。 fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF)); //添加导出标题 fputcsv($fp, ['姓名', '年龄', '地区']); //链接数据库 //$dsn = "mysql:host=127.0.0.1;port=3306;dbname=db_www;charset=utf8"; //$pdo = new \PDO($dsn, 'root', ''); $step = 100; //循环次数 $nums = 10000; //每次导出数量 $result = []; for ($i=0;$i <= $nums;$i++){ $r=[]; $r['uname']=rand_code(4); $r['age']=mt_rand(18,60); $r['city']=rand_code(4); $result[]=$r; } for($i = 0; $i < $step; $i++) { //$start = $i * 10000; //$sql = "SELECT uname,age,city FROM `hd_test` ORDER BY `id` LIMIT {$start},{$nums}"; //$pdostatement = $pdo->query($sql); //$result = $pdostatement->fetchAll(\PDO::FETCH_ASSOC); foreach ($result as $item) { fputcsv($fp, $item); } //每1万条数据就刷新缓冲区 ob_flush(); flush(); } 4.快速生成百万条测试数据这里推荐数据库的蠕虫复制命令先建好表后，插2条测试数据后，执行几次下列命令，即可指数增长INSERT INTO hd_test (uname,age,city) SELECT uname,age,city FROM hd_test; 原文链接：https://mp.weixin.qq.com/s/sl5GCiQNhXbeJmM7V6nB0g

Linux 系统目录结构
type: item
date: 2022-05-06T13:55:00+08:00
description: /bin：bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。/boot：这里存放的是启动 Linux 时使用的一些核心文件，包括一些连接文件以及镜像文件。/dev ：dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备，在 Linux 中访问设备的方式和访问文件的方式是相同的。/etc：etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。/home：用户的主目录，在 Linux 中，每个用户都有一个自己的目录，一般该目录名是以用户的账号命名的，如上图中的 alice、bob 和 eve。/lib：lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库，其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。/lost+found：这个目录一般情况下是空的，当系统非法关机后，这里就存放了一些文件。/media：linux 系统会自动识别一些设备，例如U盘、光驱等等，当识别后，Linux 会把识别的设备挂载到这个目录下。/mnt：系统提供该目录是为了让用户临时挂载别的文件系统的，我们可以将光驱挂载在 /mnt/ 上，然后进入该目录就可以查看光驱里的内容了。/opt：opt 是 optional(可选) 的缩写，这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。/proc：proc 是 Processes(进程) 的缩写，/proc 是一种伪文件系统（也即虚拟文件系统），存储的是当前内核运行状态的一系列特殊文件，这个目录是一个虚拟的目录，它是系统内存的映射，我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里，我们也可以直接修改里面的某些文件，比如可以通过下面的命令来屏蔽主机的ping命令，使别人无法ping你的机器：echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all/root：该目录为系统管理员，也称作超级权限者的用户主目录。/sbin：s 就是 Super User 的意思，是 Superuser Binaries (超级用户的二进制文件) 的缩写，这里存放的是系统管理员使用的系统管理程序。/selinux： 这个目录是 Redhat/CentOS 所特有的目录，Selinux 是一个安全机制，类似于 windows 的防火墙，但是这套机制比较复杂，这个目录就是存放selinux相关的文件的。/srv： 该目录存放一些服务启动之后需要提取的数据。/sys：这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息：针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候，对应的文件和目录也在内核对象子系统中被创建。/tmp：tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。/usr： usr 是 unix shared resources(共享资源) 的缩写，这是一个非常重要的目录，用户的很多应用程序和文件都放在这个目录下，类似于 windows 下的 program files 目录。/usr/bin：系统用户使用的应用程序。/usr/sbin：超级用户使用的比较高级的管理程序和系统守护程序。/usr/src：内核源代码默认的放置目录。/var：var 是 variable(变量) 的缩写，这个目录中存放着在不断扩充着的东西，我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。/run：是一个临时文件系统，存储系统启动以来的信息。当系统重启时，这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录，应该让它指向 run。在 Linux 系统中，有几个目录是比较重要的，平时需要注意不要误删除或者随意更改内部文件。/etc： 上边也提到了，这个是系统中的配置文件，如果你更改了该目录下的某个文件可能会导致系统不能启动。/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录，比如 ls 就是在 /bin/ls 目录下的。值得提出的是 /bin、/usr/bin 是给系统用户使用的指令（除 root 外的通用用户），而/sbin, /usr/sbin 则是给 root 使用的指令。/var： 这是一个非常重要的…

Linux系统中查看磁盘可用空间的5个命令
type: item
date: 2022-05-06T13:55:00+08:00
description: 1、df命令 df命令全称为disk-free，用于查看Linux系统中的可用和已经使用的磁盘空间，一般有以下几个常用选项： df -h：以可读的格式显示磁盘空间(否则默认显示单位是字节，不直观); df -a：包含全部的文件系统； df -T：显示磁盘使用情况以及每个块的文件系统类型(如xfs、ext2、ext3、btrfs等); df -i：显示已使用和空闲的inode。 2、du命令 du命令全称为disk useage的缩写，以默认千字节大小显示文件、文件夹等磁盘使用情况，一般有以下几个常用选项： du -h：以可读的格式显示所有目录和子目录的磁盘使用情况； du -a：显示所有文件的磁盘使用情况； du -s：仅显示总计，只列出最后加总的值； 3、ls -al命令 ls命令大家再熟悉不过了吧，使用ls -al命令可以列出特定目录的全部内容及其大小。 4、stat命令 stat命令后面可以直接跟上文件或目录，用于显示文件/目录或文件系统的大小和其他统计信息。 5、fdisk -l命令 fdisk -l：可以显示磁盘大小以及磁盘分区信息。

mysql删除日志文件_mysql删除日志文件，定时清理日志
type: item
date: 2022-05-06T13:52:00+08:00
description: 今天发现网站不能正常访问，于是登陆服务器查找问题。机智的我随手用命令：df -l 发现 硬盘爆满了，于是就知道问题所在了。Filesystem 1K-blocks Used Available Use% Mounted on/dev/xvda1 20641404 16963004 16929876 100% /tmpfs 960368 0 960368 0% /dev/shm/dev/xvdb1 51599192 4845536 44132564 10% /home/sam/share然后通过命令 du -sh * 一路检查，发现mysql的日志文件占据了大部分空间 , 整整27G，于是现在的任务就是清理mysql的日志文件(主要是清理.log文件和mysql-bin.00000X二进制日志文件)一、删除mysql日志文件第一步：登陆进入mysql，并使用 show binary logs; 查看日志文件。mysql> show binary logs;第二步：查看正在使用的日志文件：show master status;mysql> show master status;当前正在使用的日志文件是mysql-bin.000005，那么删除日志文件的时候应该排除掉该文件。删除日志文件的命令：purge binary logs to ‘mysql-bin.000005’;mysql> purge binary logs to 'mysql-bin.000005';1删除除mysql-bin.000005以外的日志文件。删除后就能释放大部分空间。二、mysql 定时清理日志文件如果每次等到发现空间不足的时候才去手动删除日志文件，这种方式是很不理想的。那么，我们就需要设置mysql，让它能自动清理日志文件。编辑mysql的配置文件，设置expire_logs_days(mysql定时删除日志文件)[root@sam ~]# vim /etc/my.cnf在my.cnf中，添加或修改expire_logs_days的值 (这里设置的自动删除时间为10天, 默认为0不自动删除)expire_logs_days=10修改后，重启mysql就会生效。但是，在生产环境中，重启mysql数据库往往会付出很高的代价。于是，可以在不重启mysql的情况下，修改expire_logs_days值登陆到mysql，并输入一下命令。 如下：mysql> show variables like '%log%';mysql> set global expire_logs_days = 10;设置完后，可以通过 show variables like ‘%log%’; 看到expire_logs_days的值已被修改成10。注意：通过这种方式设置expire_logs_days虽然不需要重启mysql即可生效，但是该方式在重启mysql之后，值会被恢复。于是，建议通过mysql命令设置expire_logs_days的同时，也修改/etc/my.cnf下的expire_logs_days=10配置，这样在下次重启mysql的时候，expire_logs_days也一样是10；————————————————版权声明：本文为CSDN博主「叶梵舒」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。原文链接：https://blog.csdn.net/weixin_36095188/article/details/114344246链接二：https://www.cnblogs.com/jimoliunian/p/15596807.html

js 脚本监听浏览器打开控制台
type: item
date: 2022-05-06T13:51:00+08:00
description: (function noDebuger() { function testDebuger() { var wWADWeTEd1 = new window["Date"](); debugger; if (new window["Date"]() - wWADWeTEd1 > 10) { window["document"]['body']['innerHTML'] = ' 私有接口，请勿调用 '; return true } return false } function start() { while (testDebuger()) { testDebuger() } } if (!testDebuger()) { window['onblur'] = function() { setTimeout(function() { start() }, 500) } } else { start() } })(); 注意: 如果封装成 js 文件一定在 body 标签之后引入作者：A-Chainsmokers链接：https://ld246.com/article/1585157247869来源：链滴协议：CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/