包含 mysql 标签的文章

VGOTFASTER 更新数据库操作层

最近一直准备把公司的所有 PHP 环境统一升级到 5.5,目前使用的是 5.2 与 5.3,而现在 5.3 都已经 EOL 了,5.4 性能有较大的提升,5.5 对内存占用上也有很多优化,作为一个互联网公司目前我们在用的版本有点不够与时俱进了,所以升级成了必然。

升级除了 preg_replace() 中 e 修饰符开始弃用以外最主要就是数据库问题了,虽然编译进 mysql 模块仍然可以继续使用原来的 mysql 驱动,但原来的 mysql 驱动官方早就开始声明要废弃,并且在 5.5 中默认是不启用的。

目前有一个项目使用的是我的 vgotfaster 框架,所以就改了改把框架的数据库操作类改使用 mysqli 驱动,由于之前我已经做了一个由 pdo 驱动的类,所以干脆抽了些时间把 pdo 与 mysqli 驱动的数据库全部抽出来成为数据库操作层,并且可以由数据库配置中的 use_pdo_driver 来指定是否使用 PDO 驱动,把 ActiveRecord 类也抽出来统一为共用的类,再把两个驱动的数据库类方法统一。

唯一的问题是 pdo 驱动没有类似于 mysql*_ping() 的方法,在 pdo 中只能写一个不具任何功能的方法,不过除非在 CLI 计划任务中需要长时间运行并且用 mysql*_ping() 来实现保持 MySQL 不超时断开,其它情况都可正常使用。现在可自由通过配置切换驱动,而且用法也完全无需修改程序的其它地方。

这里是下载:[attach=256]

详细的更新日志可以见包内的 changelog.txt 文件

最近大 OSChina 上建了个 git 仓,地址是 http://git.oschina.net/pader/vgotfaster

其实我这个 vgotfaster 框架是借鉴 CI 框架的思路,目的是为了学习学习这种框架的实现并且用在自己的一些项目中,当然仅仅是借鉴了他的结构思想,除了在单例模式的实现上参考过它的代码外,其它的代码基本都是自己写的,个人网站许久不维护了,做的一些其它的东西都落在硬盘的角落里,搞了这么多年 PHP 也就剩下这点东西了

纵观前面的几篇文章,质量真低啊,一直琢磨着把 ideawind 做出来,然后把个人主页做成一个纯粹的博客,到底什么时候会实现?大约在冬季。。

Apache + PHP + MySQL Windows 下配置

经常碰到的东西,从来记不清,记一下。
几个软件的安装没有什么说的,这里记录下关键的部分。

php.ini
php.ini 放到 Windows 目录下(建议用 php.ini-dist)
启用 php_mysql.dll 扩展

Path
将 Apache 下的 bin 目录路径和 php 路径(或者加上 php 下的 ext 路径)加入到系统环境变量中

http.conf
启用 LoadModule php5_module D:/php/php5apache2.dll
可以在下面使用 PHPIniDir "D:/php" 参数,指定 php.ini 所在目录位置,在放在 Windows 目录下时无需指定。
AddType application/x-httpd-php .php  让 .php 格式文件可以执行 PHP
增加 DirectoryIndex 中的默认首页 index.php

重启服务吧,关于性能优化什么的找 Google 大神。

拯救MySQL - 反对甲骨文收购

[attach=198]

据国外媒体报道,MySQL数据库的开发者Michael Widenius以及部分相关人士近日向欧洲、中国与俄罗斯的监管机构提交了对甲骨文-Sun交易的反对意见,有大约14000人在该意见上签字表示他们对此收购的反对。欧盟委员会此前曾反对甲骨文收购Sun,但这一垄断审查机构在12月又称,对此交易达成一个满意的结果表示乐观。欧盟委员会将在1月27日最终决定是否放行这一交易。

Windenius在周一向各国监管机构提交了这份带有签名的意见。在甲骨文对欧盟表示收购Sun不会影响正常竞争后,这名开发者便在网站发起了一项反对此交易的活动。

反垄断律师曾表示,若能获得大公司的支持,便会影响摇摆不定的监管机构做出决定。

MySQL是数据库市场的后进入者,该市场由IT公司甲骨文、IBM与微软占领。MySQL的进入拉低了数据库产品的价格,也动摇了这些巨头公司的统治地位。

Widenius是有名的开源软件开发者,他去年从Sun公司辞职,创建了自己的数据库公司Monty Program Ab。而Sun公司在2008年斥资10亿美元买下了MySQL。

Widenius在提交的意见书中称,“签名者不相信甲骨文会善待MySQL。”他表示将继续反对该交易直至最终结果出炉。

签名活动的发起人称,有超过5000名个人开发者在反对意见书上签署了自己的名字,还有3000个签名来自那些使用MySQL的公司与机构雇员。

这些签名在反对活动开始的一周内收集完成,并被提交至欧盟委员会、欧洲议会及欧盟27个成员国的垄断审查机构。活动发起者还向中国商务部与俄罗斯联邦反垄断处提交了这些签名。

在线签名地址:http://helpmysql.org/cn/


 确保有关MySQL的未来创新
以及捍卫MySQL 作为一个主要的竞争力

此致!

我的第一个使用MYSQL的程序

放了40天署假,没电脑用,在家里死看那一个PHP的书,居然基本学会了怎么用MYSQL,刚来到学校便测试一下,虽然有些小问题,不过已经修改好,以前一直觉得MYSQL有多深奥,如今看来,也不是那么难,有道是会者不难,不知道我的程序生涯将如何开始(汗,我是一个学电脑美术的),下面看看我的第一个用到MYSQL的程序吧,是个简单的统计程序。

 

PHP代码
  1. <?php       
  2. /*     
  3. 网站访问统计程序MYSQL版     
  4. 统计全部点点击,全部人次,今日点击,今日人次。     
  5. 数据判断根据存入数据库、现在时间和存入用户机器的COOKIE判断     
  6. 每台计算机每天只可以增加全部人次和今日人次一次,全部点击和今日点击每打开网页一次便增加一次     
  7.     
  8. 在安装时执行以下SQL语句:     
  9. CREATE TABLE statis (     
  10. id INT NOT NULL AUTO_INCREMENT,     
  11. n_day INT(8) NOT NULL,     
  12. all_click INT NOT NULL,     
  13. all_once INT NOT NULL,     
  14. today_click INT NOT NULL,     
  15. today_once INT NOT NULL,     
  16. about TEXT NULL,     
  17. PRIMARY KEY (id)     
  18. );     
  19.     
  20. 添加用户使用以下SQL语句:     
  21. insert into statis values(NULL,0,0,0,0,0,'站点的相关信息');     
  22.     
  23. 设计 BY pader   
  24. E-mail: ypnow@163.com     
  25. 本人的第一个原创使用MYSQL的程序     
  26. */      
  27. $_mysql["host"] = "localhost";  //数据库地址       
  28. $_mysql["user"] = "root";       //数据库用户名       
  29. $_mysql["pwd"] = "0000";        //数据库密码       
  30. $_mysql["database"] = "test";   //所用数据库名       
  31. $_mysql["table"] = "statis";    //所用数据库表       
  32.       
  33.       
  34. header("programa:no-cache");  //没有缓存       
  35.       
  36. $id = intval($_GET["id"]);  //获取用户ID       
  37.       
  38. $connect = mysql_connect($_mysql["host"],$_mysql["user"],$_mysql["pwd"])   //在此设置好MYSQL数据库的用户名和密码       
  39.   or die("连接数据库失败".mysql_error());       
  40.          
  41. $select = mysql_select_db($_mysql["database"],$connect)       
  42.   or die("选择数据库失败".mysql_error());       
  43.          
  44. $result = mysql_query("SELECT n_day,all_click,all_once,today_click,today_once,about FROM $_mysql[table] WHERE id=$id")       
  45.   or die("查询数据库失败").mysql_error();       
  46.          
  47. $row = mysql_fetch_array($result);       
  48.       
  49. list($day,$all_click,$all_once,$today_click,$today_once,$about) = $row;       
  50.       
  51. $today = date("Ymd");       
  52. $cookiename = "statisu".$id;       
  53.       
  54. $all_click++;       
  55. if($day == $today){       
  56. $today_click++;       
  57.       
  58. if((!$_COOKIE[$cookiename]) or ($_COOKIE[$cookiename] < $today)){       
  59. $all_once++;       
  60. $today_once++;       
  61. }       
  62. setcookie($cookiename$today, time()+3600*24);       
  63.       
  64. }else{       
  65. $today_click = "1";       
  66. $all_once++;       
  67. $today_once = "1";       
  68. setcookie($cookiename$today, time()+3600*24);       
  69. }       
  70.       
  71. $result = mysql_query("UPDATE $_mysql[table] SET n_day=$today,all_click=$all_click,all_once=$all_once,today_click=$today_click,today_once=$today_once WHERE id=$id")       
  72.   or die("查询数据库失败").mysql_error();       
  73.       
  74. echo "全部点击:$all_click<br>全部人次:$all_once<br>今日点击:$today_click<br>今日人次:$today_once<br>站点信息:$about<br>";       
  75.       
  76. mysql_close($connect);       
  77. ?>