PHP-大数据量怎么处理优化大数据的话可以进行以下操作:
减少对数据库的读取 , 也就是减少调用数据库,
进行数据缓存 ,
利用数据库的自身优化技术,如索引等
精确查询条件,有利于提高查找速度
php采集大数据的方案1、建议你读写数据和下载图片分开,各用不同的进程完成 。
比如说,取数据用get-data.php,下载图片用get-image.php 。
2、多进程的话,php可以简单的用pcntl_fork() 。这样可以并发多个子进程 。
但是我不建议你用fork,我建议你安装一个gearman worker 。这样你要并发几个 , 就启几个worker,写代码简单,根本不用在代码里考虑thread啊 , process等等 。
3、综上,解决方案这样:
(1)安装gearman worker 。
(2)写一个get-data.php,在crontab里设置它每5分钟执行一次,只负责读数据,然后把读回来的数据一条一条的扔到 gearman worker的队列里;
然后再写一个处理数据的脚本作为worker,例如叫process-data.php,这个脚本常驻内存 。它作为worker从geraman 队列里读出一条一条的数据 , 然后跟你的数据库老数据比较,进行你的业务逻辑 。如果你要10个并发,那就启动10个process-data.php好了 。处理完后,如果图片地址有变动需要下载图片,就把图片地址扔到 gearman worker的另一个队列里 。
(3)再写一个download-data.php,作为下载图片的worker,同样,你启动10个20个并发随便你 。这个进程也常驻内存运行,从gearman worker的图片数据队列里取数据出来 , 下载图片
4、常驻进程的话,就是在代码里写个while(true)死循环,让它一直运行好了 。如果怕内存泄露啥的,你可以每循环10万次退出一下 。然后在crontab里设置,每分钟检查一下进程有没有启动,比如说这样启动3个process-data worker进程:
* * * * * flock -xn /tmp/process-data.1.lock -c '/usr/bin/php /process-data.php/dev/null 21'
* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php/dev/null 21'
* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php/dev/null 21'
不知道你明白了没有
PHP的性能探讨和测试缘起
关于PHP 很多人的直观感觉是PHP是一种灵活的脚本语言 库类丰富 使用简单 安全 非常适合WEB开发 但性能低下 PHP的性能是否真 的就如同大家的感觉一样的差呢?本文就是围绕这么一个话题来进行探讨的 从源码 应用场景 基准性能 对比分析等几个方面深入分析PHP之性能问题 并通 过真实的数据来说话
从原理分析PHP性能
从原理分析PHP的性能 主要从以下几个方面 内存管理 变量 函数 运行机制来进行分析
内存管理
类似Nginx的内存管理方式 PHP在内部也是基于内存池 并且引入内存池的生命周期概念 在内存池方面 PHP对PHP脚本和扩展的所有内 存相关操作都进行了托管 对大内存和小内存的管理采用了不同的实现方式和优化 具体可以参考以下文档 在内存分配和回收的生命周期内 PHP采用一次初始化申请+动态扩容+内存标识回收机制 并且在每次请求结束后直 接对内存池进行重新mask
变量
总所周知 PHP是一种弱变量类型的语言 所以在PHP内部 所有的PHP变量都对应成一种类型Zval 其中具体定义如下
图一PHP变量
在变量方面 PHP做了大量的优化工作 比如说Reference counting和copy on writer机制 这样能够保证内存使用上的优化 并且减少内存拷贝次数(请参考) 在数组方面 PHP内部采用高效的hashtable来实现
函数
在PHP内部 所有的PHP函数都回转化成内部的一个函数指针 比如说扩展中函数
推荐阅读
- 游戏蜂窝网络走丢,游戏蜂窝网络异常请调试网络
- 笛卡尔爱心的java代码,笛卡尔的爱心函数c语言
- 虚拟机不满足最低要求,虚拟机要求配置
- 快手如何录制手机直播视频,手机怎么录制快手直播视频
- linux终端帮助命令 linux常用帮助命令
- 快手flutter,快手网页版
- 亿源商城小程序,亿源商城小程序是什么
- 用纸做桌面上玩的游戏,可以用纸做的游戏
- php数组数据库 php数组的类型有哪些