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