php处理大文件文件

php处理大文件文件,第1张

我前几天有一个面试,面试题就是有这样一道题。先把自己的思路说一下,因为信息量非常的大,所以我采用了分表,分成24张表,每个小时一张,虽然凌晨时刻的表可能很少数据,但这样sum字段的问题就容易解决了,我理解的sum字段是一个小时同一个用户在相同的环境的登陆次数。这样理解不知对否,请网友自行甄辨。然后我通过PHP中的fgets函数一行一行的数据取出,入表。实验了几万条数据是没有问题的,但是上亿条数据可能够呛。这一点也请网友注意,我也是新手。只是看到这里没有答案,给大家一个参考。废话不多,看流程:

日志文件(accesslog)格式:

200 /alipenggifzoneid=2&bannerid=44&clentid=6&materialid=64&redirect=

配置文件cfgphp:

    define(HOST,'localhost');//主机名
    define(USER,'root');//数据库账号
    define(PASS,'111111');//数据库密码
    define(DBNAME,'test');//所用的数据库
    define(CHARSET,'utf8');//使用的字符集

具体代码testphp:

<php
header("content-type:text/html;charset=utf-8");
require '/cfgphp';
    $link = mysql_connect(HOST,USER,PASS) or die('连接数据库失败');

//程序中自动建库和建表,这样一定程度上拖慢了程序的速度
//创建数据库
$crdb="create database if not exists "DBNAME;
if(!mysql_query($crdb)){
die('创建数据库失败');
}

//链接数据库
    mysql_select_db(DBNAME) or die('选择数据库失败');
    mysql_set_charset(CHARSET);

//因为数据量很大我将数据按小时分表,分成24个表,每小时一个表,这样num字段的值也好做统计
//数据循环建表
for($i=0;$i<24;$i++){
if($i<10){
$tbhz='0'$i;//如果前10张表,表后缀应该是00-09
}else{
$tbhz=$i;
}
$ctbsql="create table if not exists logininfo_{$tbhz}(
id int not null auto_increment primary key,
zoneid int not null default 0,
bannerid int not null default 0,
clentid int not null default 0,
materialid int not null default 0,
redirect char(200) not null default '',
time char(16) not null default '',
user_agent char(200) not null default '',
utrace char(32) not null default '',
sum int not null default 0
)TYPE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
mysql_query($ctbsql);

}


//打开文件
$file=fopen("/accesslog",'r') or die("打开文件失败");
//对文件内容进行循环,直到文件末尾才停止
while (!feof($file)){
//每次读取一行
$line = fgets($file,1024);
//状态是200的进行写入数据库 *** 作
if(preg_match('/^200/',$line)){
$pinfo=parse_url($line);//url信息
$ext=$pinfo['query'];//取得传递的各个参数
$parray=explode('&',$ext);//根据&分解为数组

//因为分解为数组后并不是要的值,所以要对值进行一次截取,将等号及等号左边的都去掉
foreach($parray as $val){
$narray[]=ltrim(strstr($val,'='),'=');
}
$narray[8]=rtrim($narray[8],'_');
//截取时间的秒数
$getmun=substr($parray[5],5,10);
$time=date('Y-m-d H',$getmun);//将秒数转化为时间类型。

//得到表后缀
$tbhz=date('H',$getmun);

$sql="insert into logininfo_{$tbhz} values(null,'{$narray[0]}','{$narray[1]}','{$narray[2]}','{$narray[3]}','{$narray[4]}','{$time}','{$narray[7]}','{$narray[8]}',0)";

//echo $sql;
$res=mysql_query($sql);//执行插入
if(!$res || !mysql_affected_rows()>0){
die('写入数据库失败');
}

unset($narray);//循环一次将narray销毁,为下一次循环做准备
//var_dump(parse_url($line)['query']);

}
}
fclose($file);//关闭

//因为sum字段还是0,下面代码段需要处理sum字段的值

//24张表循环处理
for($i=0;$i<24;$i++){
if($i<10){
$tbhz='0'$i;//如果前10张表,表后缀应该是00-09
}else{
$tbhz=$i;
}

//该sql语句是把同一个小时内,并且符合条件相等的登陆的总次数和需要的登陆信息查出,为下面修改sum做准备
$sql="SELECT COUNT('zoneid') AS sum,zoneid,bannerid,clentid,materialid,redirect,user_agent,utrace FROM logininfo_{$tbhz} GROUP BY zoneid,bannerid,clentid,materialid,redirect,user_agent,utrace";
//发送查询sql
$res=mysql_query($sql);

if($res && mysql_num_rows($res)>0){
while($row=mysql_fetch_assoc($res)){
//修改sum字段,即同一小时内的登陆次数
$upsql="update logininfo_{$tbhz} set sum='{$row['sum']}' where zoneid='{$row['zoneid']}' and bannerid='{$row['bannerid']}' and clentid='{$row['clentid']}' and materialid='{$row['materialid']}' and redirect='{$row['redirect']}' and user_agent='{$row['user_agent']}' and utrace='{$row['utrace']}'";
//发送修改sql,执行修改sum
$upres=mysql_query($upsql);
if(!$upres){
die('修改登陆sum失败');
}

}
}
}
echo '数据成功入表';

使用说明:

将配置文件cfgphp中的连接数据库账号、密码修改为自己本机的(默认新增的库名是test)

直接运行test1php

1什么是jar、jad,以及sis,它们有什么区别?
答:如果是K-java程序,则扩展名为jar和jad;如果是Symbian程序,则扩展名为sis。
一个Java程序包括两个文件:一个JAR文件,一个JAD文件。JAR文件是安装的数据文件,JAD文件是安装的信息文件。JAD文件里面包含了程序的大小、名称、类型、安装路径、版权等等信息,我们可以通过修改JAD文件,改变Java程序的安装路径。
SIS:SIS文件是Symbian系统(例如NOKIA6600、7610)使用的文件格式,可以直接安装。只需将格式为SIS的安装文件复制到MMC上,然后在TOOLS--MANAGER中打开安装就行。安装好后,可将原SIS安装文件删除。按MENU键后,会出现安装好的游戏图标。
更多说明:
a 手机游戏格式的区别
b 教你如何在电脑中识别RAR和JAR文件以及安装JAR文件方法>>
c JAR格式的手机游戏文件名称仅支持字母、数字以及下划线组合,请不要改成中文名,否则游戏无法安装。SIS格式支持中文名。
2没有JAD文件怎么安装呢?
答: 大部分手机可以直接安装JAR文件,有的手机则需要JAD文件。如果没有JAD文件的话,可以生成本地jad文件。
针对需要jad文件安装的用户,需要的工具有:JAD文件生成器。可以:点此下载JADgen(184KB)
将 jar文件 拷至 jad生成器文件的目录下,然后拖移jar文件到JADgen的图标上,将会生成相应的jad文件。
jar文件大于100K的请使用:Jad Wizard。可以:点此下载Jad Wizard 10exe(364KB)
打开Jad Wizard 10exe,然后拖移jar文件到Jad Wizard 10exe的窗口上,将会生成相应的jad文件。
3联网手机游戏需要哪些服务的支持?
答: 手机联网游戏需要的网络支持:移动用户请开通GPRS,联通用户请开通 CDMA1X。请拨与手机服务运营商联系。
4下载游戏要收费吗?
答:个别游戏在娱乐中可能产生增值费用,娱乐时请仔细阅读,明白消费。
5为什么下载不成功?
答: 由于GPRS和CDMA1X本身的平台建设刚刚完成,因此用户在下载过程中可能会出现下载失败的情况,用户只需要重新下载一次即可。
6我的手机在游戏的适用机型之列,为什么还是不能下载/安装?
答: 检查网络是否畅通以及手机是否有足够的空间来安装游戏,如果排除了手机和网络的问题还是不能下载的话,请直接与我们联系。
7安装的时候,为什么会显示无效应用程序或显示文件已损坏?
答: 可能是文件在上传/下载的过程中损坏造成的。你可以尝试重新下载该文件。如果还是不能解决,请直接与我们联系。
8我不想玩了,如何删除这个游戏?
答: NOKIA的手机是到[工具]下面的[程序管理]里删除; T720手机是到[游戏和程序]里删除。
9保存过的游戏怎么找不到了?
答:游戏下载后在手机功能表中的[应用程序]、[游戏]或者[百宝箱]中可以找到。游戏文件可以在文件管理器里面找到
10游戏过程中掉线怎么办?
答: 您只需要在一分钟内重新联上网络,您就可以重新进入刚才玩的游戏。
11我用手机下载一个待机(或游戏等其他文件),但一直无法下载成功?
答:由于部分手机限制了下载文件的大小,例如一般限制在30-40K,而部分手机则限制较宽松,可以接收50K左右的文件。而有一些精美及较复杂的动画,文件大小可能会超过35K或以上,所以有些手机可能无法完全下载成功。(包括其它文件在内。)
12手机游戏会不会影响正常通电话?
答: Moto388、Moto T720来电时d出窗口,接完电话之后继续游戏即可,完全不影响通话。 Nokia7650/3650玩游戏时电话无法打入,但可接收短信。
13手机游戏会不会影响手机的其他性能?
答: 不会。手机上的棋牌游戏类似于电脑上的软件程序,在执行程序的过程中,不会对手机造成任何影响。
14手机游戏的信息传输量有多大,会不会需要很高的信息费用?
答: 事实上手机棋牌游戏一整局的信息流量只需要2-3k,按照GPRS或者CDMA1X的按流量的计费标准,一般是001元/k的收费标准,所以一局棋牌的信息费只需要2-3分钱左右。而在更多的情况下,因为用户有1000k的赠送流量,只要不超过,用户根本无须支付额外的网络费。
15什么是S60 ,什么是S40?
答: 诺基亚S40包括 6800,6820,7200,7210,7250,7250i , 3220,6230,7270,7260,6020,6030,6021,6170,6102,6060,6101, 6230i,8800, 7360,6060,6101,6102,7270,6170,2855,3152,3155,3155i,6152,6155,6155i,6255, 6165,6111 等
诺基亚S60包括 3650,7650,N-gage,N-gage QD, 6600,7610,6260,6630,6670,N70,6680,3230,6681, 3250,6630,6680,6681,6682,N70,N91, N71,N92,N61, N80,N90,E60,E70 等

楼主你好!
新加坡出具法律意见书首先要注册一家新加坡基金会,提供新加坡基金会注册纸证书、注册纸、章程包括项目白皮书。
新加坡法律意见书包含哪些内容:

1、白皮书合规:证明从事的项目是符合新加坡条例的;防止MAS(新加坡金融管理局)调查;上交易所时需要用到;
2、token非证券化证明:证明所从事项目是非证券化的、目前有因涉及证券化的被MAS关停。做好后到MAS报备,防止MAS的调查。
3、私募销售条款合规:证明在上交易所之前所从事的私募和销售是合规的;
4、公募条款合规:相当于上交易所之后对广大投资者所做的一个承诺,增加投资者的信心;

倩女幽魂1888至尊序列号
QG04-2573-2850-2894
QG04-2392-4124-3490
QG04-1967-9767-3281
QG04-2209-8363-4659
QG04-2201-4866-0725
QG04-3751-9086-1761
QG04-2989-6219-3915
QG04-2697-6557-8484
QG04-2183-6202-5100
QG04-2636-2067-5592
QG04-3198-8898-6451
QG04-4086-9535-8862
QG04-2222-9782-4444
QG04-3452-7230-6205
QG04-1563-0903-2522
QG04-1337-5781-8663
QG04-2407-5988-3373
QG04-1824-7102-4285
QG04-1923-0451-6346
QG04-2075-0218-7245
QG04-1699-8956-6927
QG04-2818-3800-7837
QG04-2174-8066-8512
QG04-2809-0649-0600
QG04-2018-8757-2109
QG04-3859-3834-6810
QG04-2571-9830-2187
QG04-3382-1043-8610
QG04-2582-8104-2402
QG04-2451-6174-1605
QG04-2323-9064-0889
QG04-3240-9307-5986
QG04-3305-3697-5913
QG04-3626-8488-8807
QG04-3253-1262-8413
QG04-3155-6975-7562
QG04-1693-2618-2820
QG04-2537-8535-6518
QG04-2518-3219-8203
QG04-2894-8645-0385
QG04-2933-5300-5531
QG04-2884-9750-4686
QG04-3160-3825-7088
QG04-3104-8586-0064
QG04-2977-3058-3474
QG04-1515-0418-2104
QG04-1907-7873-8500
QG04-2916-9889-0829
QG04-2966-7005-8088
QG04-2902-2845-1314
QG04-2267-0061-2239
QG04-2449-9018-7346
QG04-1892-2374-8519
QG04-2835-0524-9962
QG04-2781-5518-5273
QG04-2651-6017-0148
QG04-2300-0373-3325
QG04-3053-3822-7900
QG04-2280-0529-1657
QG04-2629-3348-5995
QG04-3067-8266-0371
QG04-2560-2672-6257
QG04-2727-1338-9672
QG04-3441-7976-3618
QG04-3309-2798-8942
QG04-2323-6991-0096
QG04-1487-3346-5072
QG04-2256-9638-6529
QG04-2259-4231-7165
QG04-4512-4762-3862
QG04-3003-2716-9775
QG04-2677-1368-1114
QG04-3007-4286-8089
QG04-2930-5534-4391
QG04-2032-2818-5227
QG04-2633-2851-1568
QG04-2633-4105-8874
QG04-2421-3758-1383
QG04-3419-4580-3776
QG04-2861-7181-6460
QG04-3007-3953-6347
QG04-3084-4549-1875
QG04-2931-9239-9280
QG04-3541-9048-0559
QG04-3739-6394-4613
QG04-2453-7202-0196
QG04-2547-0188-8691
4月21日晚21点50刚搞定未使用的
序列号激活方式
第一步:打开《倩女幽魂》客户端,选择好服务器后,输入帐号密码登录。
第二步:进入新建角色页面,创建角色。选择好职业、肤色、发色、性别并给角色取名字。
第三步:点击角色下的“名称”两个字三次(这里是一个暗格),出现序列号输入窗口输入序列号激活暗格
第四步:输入序列号,点击“确定”激活成功。
第五步:激活成功后进入游戏,系统会自动赠送特权礼包到玩家的背包中。
每隔5级右键点击背包中的礼包,即可获得丰厚奖品。

该游戏被网易收购之后已经下线了
经过改动之后于2006年推出了天下2
天下2由于开发组和策划的意见不统一
整个开发组集体离开了网易
无法继续更新的天下2于是换了开发组
回炉重做 于2008年3月推出了新天下2
天下 和 天下2已经没有服务器了
也许你可以在网易公司的仓库中找到
那些逝去的经典


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13484776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-16
下一篇 2023-08-16

发表评论

登录后才能评论

评论列表(0条)

保存