• 【php爬虫】百万级别知乎用户数据爬取与分析

    代码托管地址:https://github.com/hoohackHu/zhihuSpider

    这次抓取了110万的用户数据,数据分析结果如下:

    知乎数据统计图.png

    Read more...
  • 在MySQL的InnoDB存储引擎中count(*)函数的优化

    写这篇文章之前已经看过了很多数据库方面的优化内容,大部分都是加索引、使用事务、要什么select什么等等。然而,只是停留在阅读的层面上,很少有实践,因为没有遇到真实的项目,一切都是纸上谈兵。实践是检验真理的唯一标准,于是就想在数据库上测试一些性能优化的方案,比如索引之类的,但是不想使用假的数据,于是就想着能不能抓取网上的一些数据来作分析,后来自己通过PHP抓取了一些数据,抓了大约110W的用户数据之后,当然需要统计一下具体的数量,于是我使用了以下的SQL语句(我使用的存储引擎是InnoDB):

    Read more...
  • 在PHP中获取脚本执行时间

    首先介绍一个PHP的函数microtime()

    ##microtime函数

    mixed microtime([ bool $get_as_float = false ])

    这个函数返回当前的UNIX时间戳和毫秒数。

    如果$get_as_float被设置为TRUE,那么microtime()会返回float类型的值,否则返回string类型的值。

    Read more...
  • PHP是怎么运行的

    这篇文章,研究一下PHP代码是如何解释和执行以及PHP脚本运行的生命周期。

    ##概述 PHP服务的启动。严格来说,PHP的相关进程是不需要手动启动的,它是随着Apache的启动而运行的。当然,如果有需要重启PHP服务的情况下也是可以手动重启PHP服务的。比如说在有开启opcode的正式环境更新了代码之后,需要重启PHP以重新编译PHP代码。

    从宏观上来看,PHP内核的实现就是接收输入的数据,内部做相应的处理然后输出结果。对于PHP内核来说,我们编写的PHP代码就是内核接收的输入数据,PHP内核接收代码数据后,对我们编写的的代码进行代码解析和运算执行,最后返回相应的运算结果。

    Read more...
  • 读书笔记--PHP安全编程

    ##register_globals的安全性 本特性已自php5.3.0起废弃并自PHP5.4.0起移除,故不作研究。

    ##不要让不相关的人看到报错信息

    只要关闭display_errors就可以做到,如果你希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。

    所有的出错报告级别可以在任意级别进行修改。

    PHP允许通过set_error_handler()函数指定自己的出错处理函数。

    Read more...
  • 读书笔记--SQL基础教程

    SQL基础教程脑图

    查看大图

    Read more...
  • 在php中使用array_values函数调整数组键值

    来看看这段代码。

    <?php
        $arr = array('a', 'b', 'c', '', 'd', '', 'e');
    
        print_r($arr);
    
        $filter_arr = array_filter($arr);
    
        print_r($filter_arr);
    

    上面这段程序的运行结果是这样的

    Read more...
  • JavaScript中[]==![]比较的分析

    最近发现一个有趣的比较表达式:

    [] == ![]   //结果是true
    

    为什么会是true呢?好吧,先来看看下面这个:

    [] == []    //结果是false
    

    这个比较好理解,[]相当于一个数组实例,那么两个实例使用==来比较是不相等的.

    Read more...
  • MySQL LEFT JOIN, RIGHT JOIN INNER JOIN区别分析

    在参与中大型的项目开发中,所用的数据表比较多,如果需要在两张有联系的表中查找数据,那么就需要用到JOIN关键字。一般来说都会直接使用JOIN,但是有时候看到同事或其他开发者会使用LEFT JOIN,刚开始不以为然,没有深入思考,然而,经过了一段时间,发现越来越多的代码都是如此,于是乎就觉得必须好好学习一下,以下是学习得到的总结。

    ##JOIN的定义

    • 内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结。
    • 外联结:左外联结和右外联结 左外联结A、B表的意思就是以表A为基础,将表A中的全部记录和B中符合条件的记录联结起来。最后的结果中,A的记录将全部显示出来,而B则只会显示符合搜索条件的记录。B中记录不足的地方均为NULL。 右外联结可以看做是左外联结的相反。是以B表为基础。右外联结A、B跟左外联结B、A的结果是一样的。

    Read more...
  • Linux获取文件内容命令总结--tail和head

    ##head

    取出文件前面几行

    ###命令格式

    head [参数]...[文件]...
    

    ###命令参数

    -c, --bytes=[-]K 输出文件的前K个字节;如果有-参数,输出文件的所有内容但不包含最后K个字节。
    
    -n, --lines=[-]K 输出文件的前K行,默认输出前10行;如果有-参数,则输出所有内容但不包括最后K行。
    
    -q, --quiet, --slient 从不输出给出文件名的首部
    

    Read more...