PHP+Apache+MySql

windows下用bat脚本定时备份mysql


set "ymd=%date:~,4%%date:~5,2%%date:~8,2%"
md "D:\mysql\backup\%ymd%"
copy "D:\mysql\data\mysql" "C:\backup\%ymd%"
::pause

呵呵,用了也看了很多方法,最后觉得需求很简单直接保证每天copy一份数据库就成,就简单写个copy就OK了,然后加入任务计划中定时执行即可。

【转载】php+mysql+memcache实战型技术测试

出两个变态的题目,题目很变态,但是都是实战中遇到的真实案例,

1:我写一个程序,既要使用mysql也要使用memcache,

第一行是 mysql_connect,第二行是memcache_connect

换过来写,第一行是memcache_connect,第二行是mysql_connect

caoz发现实践中这两种写法有很大的区别,区别在哪里?

2:我写一个程序,使用了mysql,生成了一个页面最后用 echo $html; 输出

一种写法是

mysql_close();

echo $html;

另一种是

echo $html;

mysql_close();

caoz发现实践中这两种区别很大,区别在哪里?

两个全是实践中发现并调整的案例。

———————————————半夜黑眼圈更新博客的分割线——————————–

caoz写程序不是追求BT的人,caoz经常和工程师强调,不追求极端的技术体现或者技术炫耀,所以,如果读者认为这里的题目是为了所谓的诸如某个写法比某个写法资源开销小一点或者其他什么,那么这真不是caoz的本意。

这两道题都是真实运营环境中遇到的典型案例,典型在哪里呢?就是当你遇到一个系统故障的时候,你怎么分析,怎么思考,怎么判断多种关联因素的影响,所以这个题目答出答不出并不重要,重要的是怎么思考系统彼此的关系。

一个典型的系统故障是, mysql 连接过多,或者说too many connections,这个问题困扰了我们很久,如果这是因为索引导致的,或者因为数据并发请求导致的,定位到原因并不复杂,但是当上述问题解决后,诡异的现象发生了,数据库几乎没有压力,没有阻塞进程,没有慢查询,但是mysql连接很多,而且都是sleep连接。此时,webserver的链接也很多,换句话说,因为php执行阻塞,导致mysql链接无法迅速释放,那么,php为什么会阻塞? 逐个断点分析发现,原来echo耽误了最多时间。

这个事情让caoz涨了点经验,之前从来不会认为echo是一个时间阻塞点(如果你在本机测试,你会认为其时间延迟几乎是0),但是实例跟踪发现,echo实际上在我们的工作环境中,代表的网络传输的过程,换言之,会因为路由,带宽的因素而等待,而此时,mysql的链接还在那里没有释放,是的,看到题目每个人都会想到,mysql_close要放在echo后面,但是为什么echo会耽误时间,很少人会想到。当然,这个也与工作环境有关,caoz只知道我们配置的webserver会有这种情况,是不是存在其他的配置模式,caoz没有实测,不敢乱说,但是这里的经验是,mysql_close放到echo前面,大量的sleep链接会迅速减少。

echo并不耗费太多系统资源,但是会等待网络传输,在高并发的网络环境下,注意这一点对数据库很有好处。

这个问题解决后,mysql健康了很多,但是偶然还会出现链接过多的问题,又困扰了很久,直到有一天,根据用户反馈的一些错误信息,发现 memcached服务器有不稳定因素,原来是memcached流量过高产生阻塞,php进程等待链接,导致mysql链接大量等待,这是第一个题目的由来,其实这个题目本身没有标准答案,但是应该有一个意识,当你在一个脚本中同时启动A,B两个链接,那么如果你不能保证这两个链接是必然可靠的(通常是无法保障的),那么后者一旦阻塞,就会导致前者大量链接等待,而前者阻塞,通常不会影响后者。所以,这个答案取决于,哪个链接对你的应用更重要,以及哪个链接有更大的并发支撑性。

两道题说到底就是一个意思,当遇到系统问题和故障的时候,多想想一些关联的因素影响,多思考整个架构响应先后过程的逻辑,数据库连接过多,不一定是数据库造成的,web链接过多,也不一定非要去优化webserver,关联因素可能才是根源,解决了根源,表象才会彻底解决。

来源http://hi.baidu.com/caoz/blog/item/a46234a83b7cc7bacb130cd5.html

php时区设置差8个小时解决办法

刚写一程序发现时间和本地系统时间总是差8小时,网上找到了解决方法,如下

发现一个问题 date(“Y-m-d G:i T”,time()) 取出来的时间和本地时间老差8个小时,可我的系统明明是中国标准时(GMT+8),最后终于找到了问题所在:

原来从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的也就是显示的时间(无论用什么php命令)都是格林威治标准时间和我们的时间(北京时间)差了正好8个小时,有以下3中方法可以恢复正常的时间。

1,最简单的方法就是不要用php5.1以上的版本

2,如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的
上面加上 date_default_timezone_set (XXX);

3,一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号= 后面加XXX,重启http服务(如apache2或iis等)即可

关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊-_-
以上都是我从php官方说明档里整理出来的GMT-8下面的地区,可能会有遗漏
你可以http://www.php.net/docs.php上查到更多的地区

由于程序最后还是会把地名转为时区来计算,所以当你使用的不是内置的区域的时候,程序将自动使用格林威治标准时间

PHPMYADMIN安装教程[phpMyAdmin-2.11.8.1-all-languages-]

1.先到网上下载phpmyadmin,再解压到可以访问的web目录下(如果是虚拟空间,可以解压后通过ftp等上传到web目录下),当然您可以修改解压后该文件的名称。
2.配置config文件
打开libraries下的config.default.php文件,依次找到下面各项,按照说明配置即可:
A.访问网址
$cfg['PmaAbsoluteUri'] = '';这里填写phpmyadmin的访问网址
B.mysql主机信息

$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address
填写localhost或mysql所在服务器的ip地址,如果mysql和该phpmyadmin在同一服务器,则按默认localhost
$cfg['Servers'][$i]['port'] = ''; // MySQL port - leave blank for default port
mysql端口,如果是默认3306,保留为空即可

C.mysql用户名和密码

$cfg['Servers'][$i]['user'] = 'root'; // MySQL user 访问phpmyadmin使用的mysql用户名
fg['Servers'][$i]['password'] = ''; // MySQL password (only needed对应上述mysql用户名的密码

D.认证方法

$cfg['Servers'][$i]['auth_type'] = 'cookie';

在此有四种模式可供选择,cookie,http,HTTP,config
config方式即输入phpmyadmin的访问网址即可直接进入,无需输入用户名和密码,是不安全的,不推荐使用。
当该项设置为cookie,http或HTTP时,登录phpmyadmin需要数据用户名和密码进行验证,,具体如下:
PHP安装模式为Apache,可以使用http和cookie;
PHP安装模式为CGI,可以使用cookie
E.短语密码(blowfish_secret)的设置

$cfg['blowfish_secret'] = '';

如果认证方法设置为cookie,就需要设置短语密码,置于设置为什么密码,由您自己决定,但是不能留空,否则会在登录phpmyadmin时提示错误好了,到此为止,您已经成功安装了phpmyadmin,简单吧 ,赶快登录体验下吧

用shtml来include网页文件 SSI环境

打开httpd.conf文件,找到:

# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml

把这两行前面的#去掉 。
然后搜索“Options Indexes FollowSymLinks”
在搜索到的那一行后面添加“ Includes”
即将该行改变为 Options Indexes FollowSymLinks Includes
保存httpd.conf,重起apache即可

什么是shtml呢?

  使用SSI(Server Side Include)的html文件扩展名,SSI (Server Side Include),通常称为”服务器端嵌入”或者叫”服务器端包含”,是一种类似于ASP的基于服务器的网页制作技术。默认扩展名是 .stm、.shtm 和 .shtml。

  什么是SSI?

  SSI是英文 Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有 强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI 脚本程序等复杂的功能。 网站维护常常碰到的一个问题是,网站的结构已经固定,却为了更新一点内容而不得不重做一大批网页。SSI提供了一种简单、有效的方法来解决这一问题,它将 一个网站的基本结构放在几个简单的HTML文件中(模板),以后我们要做的只是将文本传到服务器,让程序按照模板自动生成网页,从而使管理大型网站变得容易。

php+access 连接数据库配置(PHP第一天)

今天的成果嘿嘿:
演示地址:
http://www.7crystal.com/v2.0/xmlrz.php?action=css
http://www.7crystal.com/v2.0/xmlrz.php?action=script
http://www.7crystal.com/v2.0/xmlrz.php?action=qzone

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<?php
$url = $_GET['action'];
switch ($url){
case "css":
$title = "XHTML+CSS";
break;
case "script":
$title = "JavaScript";
break;
case "qzone":
$title = "QZONE空间技巧";
break;
default:
$title = "";
}
echo "<title>".$title." ← 七彩Crystal ← ≈忘了¢怎么◆cry◆≈ ← 7crystal.com</title>";
?>
<link href="/common/css/base.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<script type="text/javascript" src="/js/base.js"></script>
</head>
<body class="m_960">
<!--header begin-->
<script type="text/javascript" src="/js/htmlheader.js"></script>
<!--header end-->
<div id="content">
<div id="left">
<?php
$conn = @new COM("ADODB.Connection") or die ("ADO连接失败!");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("data/data.mdb");
$conn->Open($connstr);
$rs = @new COM("ADODB.RecordSet");
$url = $_GET['action'];
switch ($url){
case "css":
$rs->Open("select * from css",$conn,1,3);
$rs->Fields["cryTitle"]->Value;
$rs->Fields["cryTime"]->Value;
$rs->Fields["cryUrl"]->Value;
echo "<h3>XHTML+CSS</h3>";
echo "<ul class=\"FFdisplayN\">";
while(! $rs->eof) {
echo "<li><a href=\"".$rs->Fields["cryUrl"]->Value."\">".$rs->Fields["cryTitle"]->Value." </a><span>".$rs->Fields["cryTime"]->Value."</span></li>" ;
$rs->MoveNext();
}
echo "</ul>";
$rs->close();
break;

case "script":
$rs->Open("select * from script",$conn,1,3);
$rs->Fields["cryTitle"]->Value;
$rs->Fields["cryTime"]->Value;
$rs->Fields["cryUrl"]->Value;
echo "<h3>JavaScript</h3>";
echo "<ul class=\"FFdisplayN\">";
while(! $rs->eof) {
echo "<li><a href=\"".$rs->Fields["cryUrl"]->Value."\">".$rs->Fields["cryTitle"]->Value." </a><span>".$rs->Fields["cryTime"]->Value."</span></li>" ;
$rs->MoveNext();
}
echo "</ul>";
$rs->close();
break;

case "qzone":
$rs->Open("select * from qzone",$conn,1,3);
$rs->Fields["cryTitle"]->Value;
$rs->Fields["cryTime"]->Value;
$rs->Fields["cryUrl"]->Value;
echo "<h3>QZONE</h3>";
echo "<ul class=\"FFdisplayN\">";
while(! $rs->eof) {
echo "<li><a href=\"".$rs->Fields["cryUrl"]->Value."\">".$rs->Fields["cryTitle"]->Value." </a><span>".$rs->Fields["cryTime"]->Value."</span></li>" ;
$rs->MoveNext();
}
echo "</ul>";
$rs->close();
break;
default:
echo "七彩Crystal";
}
?>
</div>
<!--#left end-->
<div id="right">
<script type="text/javascript" src="/js/htmlright.js"></script>
</div>
</div>
<!--content End-->
<!--footer begin-->
<script type="text/javascript" src="/js/htmlfooter.js"></script>
<!--footer end-->
</body>
</html>