php获取远程数据量大,php处理大批量数据

php+mysql在数据库里数据大的话查询很慢

1.建立索引,尽可能把索引建立到你你经常比较的字段上,如select

公司主营业务:成都网站设计、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出南开免费做网站回馈大家。

a,b,c,d

from

a

where

索引字段=值,这个索引字段最好是数值型数据

2.慢有更多情况,

情况1:远程查询,其实可能查询不慢,由于数据量大,传输过程慢

情况2:WHERE

后面的比较数据太多,比如

like

类的语句

情况3:需要哪个字段只取那个字段就行了,比如select

*

from

a与select

b,c,d

from

a速度是有差距的

3.数据库定期维护,压缩,把不常用的数据备份后放入备份库里,查询时查备份库等

问题补充:

.第一条:建立索引,怎么建立,我也听说过,但不知道怎么使用

答:每种数据建立索引的方法有差异,比如SQL

SERVER

2000中可对多个字段进行索引,比如SQL

SERVER2000中有命令

CREATE

INDEX

为给定表或视图创建索引。

只有表或视图的所有者才能为表创建索引。表或视图的所有者可以随时创建索引,无论表中是否有数据。可以通过指定限定的数据库名称,为另一个数据库中的表或视图创建索引。

语法

CREATE

[

UNIQUE

]

[

CLUSTERED

|

NONCLUSTERED

]

INDEX

index_name

ON

{

table

|

view

}

(

column

[

ASC

|

DESC

]

[

,...n

]

)

[

WITH

index_option

[

,...n]

]

[

ON

filegroup

]

index_option

::=

{

PAD_INDEX

|

FILLFACTOR

=

fillfactor

|

IGNORE_DUP_KEY

|

DROP_EXISTING

|

STATISTICS_NORECOMPUTE

|

SORT_IN_TEMPDB

}

第三条:数据库定期维护,压缩:怎么个压缩法?及时备份数据到备份库查询备份库,那查询时不是还慢吗?

答:这个有压缩工具,基本上每种数据库都有自己的压缩数据库的工具

如何用PHP获取远程大文件的大小

php获取请求远程文件时响应的报头中的 Content-Length, 至于如何获取这个值,有很多种方法

php获取远程文件大小

?php

#### 此代码由 工具啦() 转换 ####

echo"function remote_filesize($uri,$user='',$pw='') "

. "{ "

. "// start output buffering "

. "ob_start(); "

. "// initialize curl with given uri "

. "$ch = curl_init($uri); "

. "// make sure we get the header "

. "curl_setopt($ch, CURLOPT_HEADER, 1); "

. "// make it a http HEAD request "

. "curl_setopt($ch, CURLOPT_NOBODY, 1); "

. "// if auth is needed, do it here "

. "if (!empty($user) !empty($pw)) "

. "{ "

. "$headers = array('Authorization: Basic ' . base64_encode($user.':'.$pw)); "

. "curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); "

. "} "

. "$okay = curl_exec($ch); "

. "curl_close($ch); "

. "// get the output buffer "

. "$head = ob_get_contents(); "

. "// clean the output buffer and return to previous "

. "// buffer settings "

. "ob_end_clean(); "

. ""

. "// gets you the numeric value from the Content-Length "

. "// field in the http header "

. "$regex = '/Content-Length:\\s([0-9].+?)\\s/'; "

. "$count = preg_match($regex, $head, $matches); "

. ""

. "// if there was a Content-Length field, its value "

. "// will now be in $matches[1] "

. "if (isset($matches[1])) "

. "{ "

. "$size = $matches[1]; "

. "} "

. "else "

. "{ "

. "$size = 'unknown'; "

. "} "

. "$last=round($size/(1024*1024),3); "

. "return $last.' MB'; "

. "

."";

?

php curl 大量数据采集

这个需要配合js,打开一个html页面,首先js用ajax请求页面,返回第一个页面信息确定处理完毕(ajax有强制同步功能),ajax再访问第二个页面。(或者根据服务器状况,你可以同时提交几个URL,跑几个相同的页面)

参数可以由js产生并传递url,php后台页面根据URL抓页面。然后ajax通过php,在数据库或者是哪里设一个标量,标明检测到哪里。由于前台的html页面执行多少时候都没问题,这样php的内存限制和执行时间限制就解决了。

因为不会浪费大量的资源用一个页面来跑一个瞬间500次的for循环了。(你的500次for循环死了原因可能是获取的数据太多,大过了php限制的内存)

不过印象中curl好像也有强制同步的选项,就是等待一个抓取后再执行下一步。但是这个500次都是用一个页面线程处理,也就是说肯定会远远大于30秒的默认执行时间。

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

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

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

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

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


名称栏目:php获取远程数据量大,php处理大批量数据
文章路径:http://scyanting.com/article/heopch.html