重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

php拉取大数据 php如何处理大数据

为什么PHP不能从从mysql读取大数据

多大的数据叫大数据啊?只能说数据越大读得越慢,但只要给足够的内存、足够的时间,再大的数据也能读出来。

创新互联是一家专注于成都做网站、网站设计、外贸营销网站建设与策划设计,盈江网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:盈江等地区。盈江做网站价格咨询:028-86922220

你所说的这个问题,应该不是PHP和mysql的问题,任何程序语言,任何数据库,在硬件限制和执行时间限制的情况下,数据无限增大,都终究会读不出来。

php怎么导出大量数据的Excel

微软的Excel设置单元格行数默认是6万行rows,相对的讲其实当我们超过1万行的时候已经是大数据的导出。

好比:有客户10000人,平均每人每天产生10条活动记录,要导出上周所有的客户活动记录: 10000*10*7=700000

估计看70万行的Excel这个人会疯掉的,我们的建议是分批次导出,按时间导出到不同的excel

下面是一个PHPExcel官方的Demo(已修改过)

复制代码

define('EOL', 'br /');

$objPHPExcel = new \app\extensions\PHPExcel\PHPExcel();

ini_set("memory_limit", "1024M"); // 设置php可使用内存

$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;

if (!\PHPExcel_Settings::setCacheStorageMethod($cacheMethod)) {

die($cacheMethod . " 缓存方法不可用" . EOL);

}

echo date('H:i:s'), " 当前使用的缓存方法是: ", $cacheMethod, " 方式", EOL;

echo date('H:i:s'), " 开始设置文档属性", EOL;

$objPHPExcel-getProperties()-setCreator("Maarten Balliauw")

-setLastModifiedBy("Maarten Balliauw")

-setTitle("Office 2007 XLSX Test Document")

-setSubject("Office 2007 XLSX Test Document")

具体的还有很多写不下,我是在后盾人看的教学视频无意中学到的,正好解答给你希望能帮到你

如何用php导出导入大数据库

在使用PhpMyAdmin的时候经常用到数据的导入和导出(Export/Import),但是在导入大数据的时候由于php上传文件的限制和脚本响应时间的限制,导致phpMyAdmin无法导入大数据。很多时候都是由于文件过大,从本地浏览上传导入,容易中断失败,有没有更好的方法呢?

方法:

在phpMyAdmin的目录下,找到根目录的config.inc.php文件,

打开config.inc.php文件,查找$cfg['UploadDir'],这个参数就是设定导入文件存放的目录,这里把值设定为:ImportSQLFile。

在phpMyAdmin目录下,建立以ImportSQLFile命名的文件夹,

把我们需要导入的数据文件,放到ImportSQLFile文件夹下面,非常简单,

登入phpMyAdmin,选择需要导入的数据,点击导航条上面的“导入”按钮,

选中“从网站服务器上传文件夹ImportSQLFile/中选择:”选项,并需要导入的数据文件,

最后点击“执行”,即可导入成功。

注意事项

如果在config.inc.php文件,没有找到$cfg['UploadDir'],可以自己在文件中添加上去即可。

php中向mysql取数据,如果数据库中的数据量大于10w,后面的数据就取不到,如何解决?

应该是你的数据库配置限制了内存使用量导致的.建议查找下相关mysql配置资料.

直接倒序取一部分,如果可以就应该是配置的问题.

如果慢的话要考虑字段优化

问题需要具体.不铭感的话可以把数据发来我调试一下看看.

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如何处理大数据
网站路径:http://cqcxhl.com/article/hppojh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP