手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2025年02月的文章

看到一篇误人子弟的PHP代码

原文地址:http://hi.baidu.com/hi_bai_du_com/blog/item/fd297b89b318a8b20e24444a.html

原文:

PHP代码
  1. <?  
  2. /* 
  3. # 
  4. # 数据表的结构 `images` 
  5. # 
  6.  
  7. CREATE TABLE images ( 
  8.     picid int(3) NOT NULL auto_increment, 
  9.     picdata longblob NOT NULL, 
  10.     pictext varchar(100) NOT NULL default '', 
  11.     PRIMARY KEY    (picid) 
  12. ) TYPE=MyISAM; 
  13.  
  14. */  
  15. if(trim($picfile[0])!=""){  
  16.   $link=@mysql_connect("localhost","root","root");  
  17.   //连接,用你的具体连接名替换root,具体连接密码替换root  
  18.   if($link==false) {  
  19.     echo "<script>alert('连接数据库时发生错误,请稍后再试!')</script>";  
  20.   }  
  21.   $res=mysql_select_db("kkk");  
  22.   if($res==false){  
  23.     echo "<script>alert('打开数据库时发生错误,请稍后再试!')</script>";  
  24.   }  
  25.   $tmpset=0;  
  26.   // 存放成功加入的图片数目  
  27.   for($i=0;$i<=3;$i++){  
  28.     // picfile[i]存放所提交的图片信息(文件路径)  
  29.     if(trim($picfile[$i])!=""){  
  30.      //读取数据  
  31.       $fp=fopen($picfile[$i],"r");  
  32.       $picdata=fread($fp,filesize($picfile[$i]));  
  33.       fclose($fp);  
  34.       //加上必要的标志符号  
  35.       $picdata=addslashes($picdata);  
  36.       //用具体的数据表名代替images  
  37.       //pictext[i]存放所提交的图片的文字说明  
  38.       $qu="insert into images(picdata,pictext) values('$picdata','$pictext[$i]')";  
  39.       $res=@mysql_query($qu,$link);  
  40.          if($res==false){  
  41.            echo "<script>alert('图片 ".$i." 提交失败!')</script>";  
  42.            continue;  
  43.         }  
  44.       $tmpset=$tmpset+1;  
  45.     }  
  46.   }  
  47.   echo "<script>alert('操作成功!实际入库图片数 ".$tmpset." 张')</script>";  
  48. }  
  49. ?>  
  50. <html>  
  51. <head>  
  52. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  53. <title>无标题文档</title>  
  54. </head>  
  55.   
  56. <body>  
  57. <form action="<? echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data" name="form1">  
  58. <input type="file" name="picfile[]">文件说明<input type="text" name="pictext[]"><br/>  
  59. <input type="file" name="picfile[]">文件说明<input type="text" name="pictext[]"><br/>  
  60. <input type="file" name="picfile[]">文件说明<input type="text" name="pictext[]"><br/>  
  61. <input type="file" name="picfile[]">文件说明<input type="text" name="pictext[]"><br/>  
  62. <input type="submit" name="Submit" value="提交">  
  63. </form>  
  64. </body>  
  65. </html>  

 

 

显示存在mysql中的图片
  1. <?  
  2. /* 
  3. * 在外部用<img src="displayimg.php?picid=1">来调用数据库中的第一张图片 
  4. */  
  5.   
  6. $link=@mysql_connect("localhost","root","root");  
  7. mysql_select_db("kkk");  
  8. $qu="select picid,picdata from images where picid=$picid";  
  9. $res=@mysql_query($qu,$link);  
  10. $num=mysql_num_rows($res);  
  11.   if($num==0){  
  12.     print "<br/><br/><br/>";  
  13.     print "<p><b>没有这张图片!</b></p>";  
  14.     exit();  
  15.   }  
  16. $row=@mysql_fetch_row($res);  
  17. header("Content-type:image/");  
  18. echo $row[1];  
  19. ?>  

——END——
仔细看看吧。。。是怎么误人子弟的。唉。
1、上传没有上传(大哥,你这是读本地文件呐,如果是这样的话,那。。。要那个enctype有啥用?)
2、变量直接全局(。。。。。。。。)
3、二进制字段是可以直接echo输出的吗??不谈别的,刚才你都addslashes了,为什么输出的时候没有stripslashes??
4、header头。。。。
5、for循环,直接就是3了。。这个居然就写死了
6、$tmpset的加法。。。都用了for了,用这个有意义吗??直接用$i不就完了?(这个就不算他的问题,算是习惯吧)
7、BLOB字段的插入。。。直接插的吗???看这里
MySQL 5 中 blob 类型字段的插入

Tags: php, 上传, 误人子弟

技术不被商业接受,就没有价值

虽然我不喜欢李彦宏,但这句话,我还是挺接受的:技术不被商业接受,就没有价值。
这句话并非是我杜撰,而是来自炳叔的BLOG,人家这个炳叔比我这个膘叔厉害的多,最起码人家是领导,我还是民工。

贴上炳叔里面的图片:

大小: 55.22 K
尺寸: 234 x 300
浏览: 1651 次
点击打开新窗口浏览全图

Tags: 闲谈, 李彦宏, 技术, 价值

PHP 4官方支持结束

自2000年5月22日发布正式稳定版8年之后,8月8日标志着PHP 4生命的终结,官方不再提供支持,不会再有安全补丁发布。PHP 4.4.9是PHP 4.x的最后一个版本。管理员和开发者失去了最后一个不升级到新一代版本开发环境的理由。过去几年,PHP 5提供了多种升级的途径,它的最新版本是5.2.6。但PHP 4发布8年之后,仍然有相当多的系统将不会在未来迁移到PHP 5,其中有相当的一部分可能永远也不会升级到PHP 5。
 对于那些不升级到新版PHP的用户,PHP专家Stefan Esser将通过Suhosin项目继续为PHP 4.x系列提供第三方安全补丁。

Tags: php, 支持, 终结

[分享]mysql数据库索引查询优化的分享

问题描述:


我们要访问的表是一个非常大的表,四千万条记录,id是主键,program_id上建了索引。
执行一条SQL:

select * from program_access_log where program_id between 1 and 4000

这条SQL非常慢。
我们原以为处理记录太多的原因,所以加了id限制,一次只读五十万条记录

select * from program_access_log where id between 1 and 500000 and program_id between 1 and 4000

但是这条SQL仍然很慢,速度比上面一条几乎没有提升。
Mysql处理50万条记录的表,条件字段还建了索引,这条语句应该是瞬间完成的。


问题分析:


这张表大约容量30G,数据库服务器内存16G,无法一次载入。就是这个造成了问题。
这条SQL有两个条件,ID一到五十万和Program_id一到四千,因为program_id范围小得多,mysql选择它做为主要索引。
先通过索引文件找出了所有program_id在1到4000范围里所有的id,这个过程非常快。
接下来要通过这些id找出表里的记录,由于这些id是离散的,所以mysql对这个表的访问不是顺序读取。
而这个表又非常大,无法一次装入内存,所以每访问一条记录mysql都要重新在磁盘上定位并把附近的记录都载入内存,大量的IO操作导致了速度的下降。

问题解决方案:
1. 以program_id为条件对表进行分区
2. 分表处理,每张表的大小不超过内存的大小
然而,服务器用的是mysql5.0,不支持分区,而且这个表是公共表,无法在不影响其它项目的条件下修改表的结构。
所以我们采取了第三种办法:

select * from program_access_log where id between 1 and 500000 and program_id between 1 and 15000000

现在program_id的范围远大于id的范围,id被当做主要索引进行查找,由于id是主键,所以查找的是连续50万条记录,速度和访问一个50万条记录的表基本一样

总结:
这是一个在千万笔记录表中由于使用了索引导致了数据查找变慢的问题,有一定的典型性和大家交流下!

————END————

索引这个东西很害人的。好的时候很好。。。用的不好。那真的是害己害人啊。

本来来自:PHP5研究室,责编:抽烟的蚊子,网址:http://www.phpv.net/html/1624.html

Tags: mysql, database, 索引, 优化, 技巧

你能坚持吗?

感谢小余给我们带来的文章。本想根据其中的内容想润色一下,但仔细思考后还是放弃了。每个人的思想和观念都有其独到之处,如果我强行改变,那就是改变原作者的思路了。

原文网址:http://www.cnblogs.com/yice/archive/2008/06/09/1216337.html

内容开始:


    一个大老板一天心血来潮巡视他的一家工厂,看着看着瞧见一个员工正埋着头努力地工作着。他走过去拍拍员工的肩膀说道:"好好干吧!我以前也是和你一样。"员工抬起头来,笑一笑,也伸手拍拍大老板的肩膀,说:"你也好好干吧!我以前也是和你一样。"
    还是用一个小幽默来作为文章的开头,今天所要谈谈的主要是关于创业的一些事情。这几天遇到的事情和聊到的事情都关于创业的,有一个老朋友在深圳准备自立门 户打江山。他也刚好有个机会接了一个小项目,按照他的分析这个项目应该有一定的市场,希望我能够有机会一起合作。我看过项目的一些资料,觉得项目的难度不 小,如果项目的所有功能都实现,客户给的项目经费应该说是相差甚远,但是对于个人来讲,也是一个小小的诱惑。
    我想很多的朋友都希望能够创业,不少人已经或则正准备创业,毕竟对于大多数人来说,是成不了皇帝打工仔,工字本就不出头,所以都希望有朝一日能够自己当家 做主。但是我们要问一句:"你准备好了吗?"如果说要做老板可能一点都不难,但是如何把事业做起来,不要让自己的那些辛苦钱打了水漂,只是自己过了一把老 板瘾,这些并不容易,因为你要考虑的事情太多了,不会像作打工仔时候那么轻松。
我也给我那老朋友浇了许多冷水,我问题了接个问题:
    1)项目是怎么拉来的
    2)项目经费多少
    3)项目现在有多少人,是什么样的人
    4)如果客户的款没有到位,你能够坚持多久
    5) 这个项目做完之后,后续的该怎么做
    朋友的这个项目是针对政府部门的一个管理系统,因为属于比较特殊的部门,目前在市场上他认为还属于一个空洞期,所以他分析说应该有不错的市场,但是我倒不 看好,因为希望和政府部门做系统,需要有一定的资历和背景才比较容易,这些对于我们来说都是缺乏。而且产品本身我也不太看好,市场上已经有类似的产品,因 为部门比较特殊,虽然是有市场,但是要打开这部分市场的代价也不小。
    对于很多创业者来说,能够找到好的项目可以说是一个良好的起点,但是不代表他就能够成功,毕竟他只找到了一个方向,方向虽然对了,但是离成功还很遥远。我 没有过多评价朋友这个项目今后的市场有多少,毕竟未来的事情是无法预知的,我更不可能知道这个方向对或则不对,只有尝试过了才知道。更何况朋友一腔热血, 单纯就凭那股子热情就值得我佩服,所以即便我自己不看好,也没有去阻止他的创业热情。
    我一再追问一件事情,你能够坚持多久?因为对于对于的项目的今后朋友都有自己的想法,我主要想知道他是否能够坚持到最后,因为从他目前情况来看,一旦他决 定要开始创业,将开始一场持久艰苦的奋斗时期,先不考虑项目的后期有多么好的前景,能够坚持过这段时间才能再谈后面的发展。但是就是这个坚持时期,让多少 创业的朋友中途放弃,如果打算创业的朋友,一定要估算好自己能够坚持的时间,把问题都计算倒最坏,然后估计一下自己能够在这种最坏的情况下能够坚持多久。
    对于希望创业的朋友,先不要去找项目或则其它的,先自己回顾一下自己的过去,看看自己能够再这条路上坚持多久,其实最后能够成功的人往往都不是起跑跑的早或则跑得快的人,而是看谁能够坚持到最后。

————END————
编后:我不知道小余身上发生了什么,这其中有些观点也是我想和朋友说的。不过他的沉淀时间也算是过长的了。话说太多就成了罗嗦了,因此,我也想问问他:你能坚持多久。

[由于小余写了不少类似的文章,因此决定逐步转载,如果小余对我有意见,我决定停止转载]

 

Tags: 创业, 思考, 沉淀