标签为 "Php" 的存档

PHP.ini中一些配置选项的说明

 PHP的配置会影响你所写代码的行为以及你使用的技巧, PHP的配置主要由一个名为php.ini的文件所指定。该文件包含很多配置选项,每一项都会对PHP产生非常特定的影响。如果该文件不存在,或者该文件中的某选项不存在,则会使用默认值。

  如果你不知道php.ini文件所在的位置,你可以使用phpinfo( )来确定PHP中对该文件路径的定义:

<?php
 phpinfo(); 
?>

显示的结果中“Loaded Configuration File ”显示了php.ini的完整路径。如果只显示了路径(没有文件名),这就意味着PHP无法在所示路径找到php.ini文件。

该文件包含的自身说明非常好,因此你可以阅读该文件并选择适合你的配置选项。而手册更是详细,所以在你需要某一选项的更多信息时,可以阅读这个:http://hk.php.net/manual/zh/ini.php

Read more…

如何通过php判断操作系统类型 linux windows

php中有许多系统预定义的变量,通过判断它们的值就可以轻松的判断出系统是 windows还是*unix。
其中相关的函数或者预定义变量如下:

php_uname();
PHP_OS
DIRECTORY_SEPARATOR
PHP_SHLIB_SUFFIX
PATH_SEPARATOR

判断操作系统的示例PHP程序:

if(PATH_SEPARATOR==':'){
//linux
echo "linux";
}else{
//windows
echo "winnt";
}

Read more…

php-mail()函数发送UTF-8邮件-中文标题乱码

当用php的mail()函数发送邮件时,如果包含中文,标题产生乱码,需要做以下处理即可解决:

先用函数base64_encode() — 使用 MIME base64 对标题数据进行编码
标题字符串前加编码类型例如: =?UTF-8?B?
标题字符串后加:?=

如:

$subject = '邮件标题中文-php-mail()函数';
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";

这样就不会乱码了。

Read more…

Piwik 统计系统 中文邮件发送 bug

先简单介绍一下Piwik:

Piwik是一个PHP和MySQL的开放源代码的Web统计软件. 就像Google Analytics 一样。它给你一些关于你的网站的实用统计报告,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等… Piwik拥有众多不同功能的插件,你可以添加新的功能或是移除你不需要的功能,Piwik同样可以安装在你的服务器上面,数据就保存在你自己的服务器上 面。你可以非常容易的插入统计图表到你的博客或是网站抑或是后台的控制面板中。安装完成后,你只需将一小段代码放到将要统计的网页中即可。

做网站的人如果不希望使用其它第三方的统计代码,可以自己搭建一个Piwik,这个功能也是很强大的。并且支持中文。

像Google Analytics一样的Web统计软件 --- Piwik

像Google Analytics一样的Web统计软件 --- Piwik

Read more…

原创翻译—MongoDB入门(PHP客户端)

原文:MongoDB as in huMONGOus, not retarded

最近公司有一个比较大的项目,涉及到的数据很多,需要做一个统计分析系统,供做决策使用。考虑放弃mysql,使用NoSql数据库,我觉得MongoDB最适合了,看了一片MongoDB入门的文章,觉得不错,抽时间一点点翻译翻译,翻译的不对、不好的地方,还请大家多多指教。

——————————————————————————-

与其他人不一样,我不会在iPad上写任何东西。是的,我仍在写Popurls Clone系列的后续部分,而且和往常一样,它花费了我比预期更长的时间。生活是美好的~~一大堆账单蜂拥而至,它证明:你确实需要通过“工作”来“挣钱”。但是,我们为什么会这么认为??那是相当愚蠢的,就像在动画《星球大战》前传/续集中发生克隆战争一样(不知道这么翻译对不对,看《The Big Bang Theory》也多次提到了《星球大战》,一直想看,也没机会看,将来会抽时间学习下的~:))当人们开始思考一些人生伟大的、有意义的事情时,比如说:你怎样逃掉你的账单。我想,是时候写一些关于数据库的东西了。你看到前面这些话之间的联系了么?–看懂了?太好了,虽然我不知道有啥关系,哈哈哈哈。。。。在谷歌搜索mysql,大约有1.17亿条结果,如果搜索MongoDB,只有1、2百万左右,很好。这意味着,如果我的这篇文章被谷歌收录了,它将构成不少于8.33 × 10-7 %的相关搜索的结果。与mysql的形成鲜明的对比,是5.88 × 10-9 %。我也已经写了不少关于mysql的东西,我真是个大好人啊[害羞]…简单来说,本文将覆盖MongoDB以及你如果在PHP中使用它,前边的东西让大家高兴下,如果你不感冒,那么你还是不用看了~~

简要介绍MongoDB

首先,MongoDB不是像mysql一样的关系型数据库RDBMS,关系数据库是基于关系模型、基于埃德加·弗兰克在1969年提出的一阶逻辑。数据及它们的内在关系,不存储为表,表构成了它们之间的关系,这些表由一些固定数量的垂直列和不固定数量的行的模型组成,理论上,行可以无限大。数据通过SQL语句来进行查询,好了——-我们这里讨论的是关于NoSql技术的一部分–MongoDB,在Nosql技术中,有三种类型的数据库:以列为导向的,Key/Value键值对的,以及以文档存储为导向的,MongoDB属于第三类。在这里,一个文档,就是一个带有一些给定属性的数据结构,这些属性可以是字符串、数字、数组或者Objects等等,如果你在PHP中接触过复合数组或者Object对象,你就明白是什么意思了。你也可以在collections中给文档分组,同样的,有一些叫做子文档的,你也可以那样认为。

Read more…

MongoDB as in huMONGOus, not retarded –原文

摘自:http://pronewb.com/mongodb-as-in-humongous-not-retarded

Unlike the rest of the known world, I won’t write anything on the iPad. Yet. Instead, I’m still in the process of writing the upcoming parts of my Popurls Clone series and as per usual, it takes a lot more time than expected. In combination with a massive amount of bills, life is good! As it turns out, you actually need to “work” in order to get “money”. How, when and why did we agree upon that? That’s just as stupid as, say, doing a fully animated Star Wars prequel/sequel to take place during the Clone Wars. Oh, wait… While pondering life’s great mysteries, such as how you can evade paying your bills, I felt it was time to write something about databases. You see the connection, right? Good, because I don’t. A quick Google search for MySQL rendered roughly 117 million results so I figured that another article about it would be kinda superfluous. A search for MongoDB on the other hand resulted in “only” 1,2 million results. Much better. That means that if and when this article gets indexed by the Google, it will constitute no less than ~ 8.33 × 10-7 % of the relevant search results, in stark contrast to the ~ 5.88 × 10-9 %, should I’ve written some stuff about MySQL. Goodie! In short, this article will cover MongoDB and how you can use it with PHP. Good times ahead so if you’re a killjoy, you’re not welcome.

Read more…

入门MongoDB,你需要注意的4个技巧

作者写下这篇文章的用意,就是提醒广大DBA不要重蹈覆辙。特别是MongoDB初学者需要注意这四个技巧,会避免你走很多弯路。

我之所以喜欢MongoDB,主要是因为在动态语言中使用它是如此的简单,自然。到目前为止,我已经在两个项目(Encode 和 Sparrw)中使用过它了,虽然对这个选择我非常满意,但是有些问题我还是没有注意到,这些问题让我抓了好几个小时的头皮才解决。如果你有多台机器,然后为数据库多分配几台机器,那么有些问题可以迎刃而解,但是我的项目是运行在单个(虚拟)服务器之上的低流量Web应用程序。

(关于MongoDB,具体可以参考:http://www.mongodb.org/)

(关于作者的两个项目Encode 和 Sparrw,分别可以参考:http://en.co.de/和http://sparrw.com/)

这些问题都很简单,都是一些文档化的东西,不是什么Bug(当然,这要看你问谁了)。如果你读过所有的文档,那么这些问题可能你基本都见过了。我也是,但是在那之后,当再次遇到它们的时候,我就把文档中的内容都忘到脑后了,然后,我不得不再次修复它们。

Read more…

MongoDB,无模式文档型数据库简介

Mongo是一个高性能,开源,无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发,提供了以下功能:

◆面向集合的存储:适合存储对象及JSON形式的数据。

◆动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

◆完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。

◆查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。

Read more…

php的IP转换成整型函数ip2long()出现负数

php中将IP转换成整型的函数ip2long()容易出现问题,在IP比较大的情况下,会变成负数。
例如:

<?php
$ip = '192.168.127.1';
$ip_n = ip2long($ip);
echo $ip_n;      //得到 -1062699263
?>

由于IP转换成的整型值太大超出了整型的范围,所以变成负数。需写成$ip_n = bindec(decbin(ip2long($ip)));这样便可得到无符号的整型数,如下所示:

<?php
$ip = '192.168.127.1';
$ip_n = bindec(decbin(ip2long($ip)));
echo $ip_n;      //得到 3232268033
?>

Read more…

千万级访问量架构

1、HTML 静态化

其实大家都知道,效率最高、消耗最小的就是纯静态化的 html 页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单 的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无 法全部手动去挨个实现,于是出现了我们常见的信息发布系统 CMS,像我们常 访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统 来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面, 还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有 一套高效、可管理的 CMS 是必不可少的。除了门户和信息发布类型的网站,对 于交互性要求很高的社区类型网站来说, 尽可能的静态化也是提高性能的必要手 段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是 大量使用的策略,像 Mop 的大杂烩就是使用了这样的策略,网易社区等也是如 此。同时,html 静态化也是某些缓存策略使用的手段,对于系统中频繁使用数 据库查询但是内容更新很小的应用,可以考虑使用 html 静态化来实现,比如论 坛中论坛的公用设置信息, 这些信息目前的主流论坛都可以进行后台管理并且存 储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考 虑将这部分内容进行后台更新的时候进行静态化, 这样避免了大量的数据库访问 请求。

Read more…