PHP 获取文件 或 字符串的编码方式

  有时候从文本文档或者其它地方获取到字符串后由于编码的问题,输出的中文等文字会出现乱码,这时可以使用 mb_detect_encoding() 函数来判断字符串是什么编码的,然后用iconv函数转换成与页面一致的编码再输出字符串或者写入数据库。

注意:要把php.ini中 extension=php_mbstring.dll 前的;号去掉,重启apache就可以了。

代码如下: 

PHP代码
  1. <?php   
  2. define ('UTF32_BIG_ENDIAN_BOM'   , chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));   
  3. define ('UTF32_LITTLE_ENDIAN_BOM'chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));   
  4. define ('UTF16_BIG_ENDIAN_BOM'   , chr(0xFE) . chr(0xFF));   
  5. define ('UTF16_LITTLE_ENDIAN_BOM'chr(0xFF) . chr(0xFE));   
  6. define ('UTF8_BOM'               , chr(0xEF) . chr(0xBB) . chr(0xBF));   
  7.   
  8. function detect_utf_encoding($text) {   
  9.     $first2 = substr($text, 0, 2);   
  10.     $first3 = substr($text, 0, 3);   
  11.     $first4 = substr($text, 0, 3);   
  12.       
  13.     if ($first3 == UTF8_BOM) return 'UTF-8';   
  14.     elseif ($first4 == UTF32_BIG_ENDIAN_BOM) return 'UTF-32BE';   
  15.     elseif ($first4 == UTF32_LITTLE_ENDIAN_BOM) return 'UTF-32LE';   
  16.     elseif ($first2 == UTF16_BIG_ENDIAN_BOM) return 'UTF-16BE';   
  17.     elseif ($first2 == UTF16_LITTLE_ENDIAN_BOM) return 'UTF-16LE';   
  18. }   
  19. function getFileEncoding($str){   
  20.     $encoding=mb_detect_encoding($str);   
  21.     if(emptyempty($encoding)){   
  22.         $encoding=detect_utf_encoding($str);   
  23.     }   
  24.     return $encoding;   
  25. }   
  26. $file = 'text1.txt';   
  27. echo getFileEncoding(file_get_contents($file));  // 输出ASCII   
  28. echo '<br />';   
  29.   
  30. $file = 'text2.txt';   
  31. echo getFileEncoding(file_get_contents($file));  // 输出UTF-8   
  32. echo '<br />';   
  33. $file = 'text3.txt';   
  34. echo getFileEncoding(file_get_contents($file));  // 输出UTF-16LE   
  35. echo '<br />';   
  36. ?>   

其中三个文件:text1.txt 、text2.txt、text3.txt,分别以ASCII、UTF-8、UNICODE 的编码方式保存

PHP5.3的VC9、VC6、Thread Safe、Non Thread Safe的区别

  PHP 5.3.1一共有四个版本,VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe。

  一、如何选择 PHP5.3 的 VC9 版本和 VC6 版本
  VC6 版本是使用 Visual Studio 6 编译器编译的,如果你的 PHP 是用 Apache 来架设的,那你就选择 VC6 版本。
  VC9 版本是使用 Visual Studio 2008 编译器编译的,如果你的 PHP 是用 IIS 来架设的,那你就选择 VC9 版本。
  二、如何选择 PHP5.3 的 Thread Safe 和 Non Thread Safe 版本
  先从字面意思上理解,Thread Safe 是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式而耗尽系统资源。Non Thread Safe 是非线程安全,在执行时不进行线程(Thread)安全检查。
  再来看 PHP 的两种执行方式:ISAPI 和 FastCGI。
  ISAPI 执行方式是以 DLL 动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以 ISAPI 来执行 PHP,建议选择 Thread Safe 版本;
  而 FastCGI 执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI 来执行 PHP,建议选择 Non Thread Safe 版本。
  官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用。
 

linux vs bsd我们到底选择谁?

注:这篇文章也不知道是什么时候的,仅供参考。

  目前开源操作系统遍地开花。linux阵营rhel,centos,debian,opensuse等等,bsd阵营有freebsd,netbsd,openbsd三侠,我们到底选择谁呢?有些人说freebsd安全性高,稳定性强,有些人说linux性能高,功能更强,按照本来这么多年的亲身体会与研究,翻然醒悟原来,他们没有谁强谁弱,大家由于都是开源的,源代码公开,可以相互学习,很多开发大牛在开发bsd的同时也在开发linux。他们的基础都是数学,你能说西方的数学比东方的数学更高级吗?其实我们应该按需选择,不能片面的说谁比谁好!

           首先咱们说说bsd把,按照性能来说我们可以这样排freebsd > netbsd > openbsd ,按照安全性来我们可以openbsd > freebsd >= netbsd,freebsd可以获得很多硬件开发商的支持,驱动做的更好,比如intel网卡,重要的设备intel官方只支持freebsd 而且freebsd从linux那里学习了很多东西性能是最高的,本人就是很喜欢freebsd因为只有他支持网卡polling 模式对抗小包攻击效果很好,比linux下的NAPI更为成熟高效!但是由于ufs文件系统写性能不如(很多测试证明网上)所以我们一般拿来做读多写少的web服务器或者防火墙、流控!

          而openbsd 则是从netbsd分家出来的一个系统,由于作者的严谨、认真,对安全的狂热,在强调安全比性能重要的场合就最合适不过了,但是和netbsd一样只能自己开发设备驱动,不能得到很多硬件厂商的支持,所以很多新硬件功能不能使用,但是由于安全,小巧一般都是拿来做防火墙,或者安全vpn设备等,如果你硬是要拿来做web或者数据库服务器,只要你不感觉痛苦,我也不反对呵呵..

          至于netbsd其实没有什么太吸引人的地方,除了对多平台的支持能力强之外,性能一般,安全一般,代码要兼顾所有硬件,所以必须简洁,必须考虑兼容性,很保守,安全上还是从openbsd freebsd那里学习。但是一般普遍使用的是通用的x86平台,很少用到那些特殊的嵌入试,或者大型机,所以优势尽无,不建议使用!

          接下来就是linux了,很多人问debian rhel centos到底有什么关系,哪个更好呢!其实所有的linux都是没有本质区别的都是一个linux kernel加上一堆用户态应用程序diy 成的系统,最大的区别就是有些是免费的,有些是提供收费服务的,还有一点就是rhel centos  oracle linux他们是一家人,相比debian支持更多的品牌厂商的专有驱动和固件程序,这些非free的在debian内核中是被除去的,所以debian版权问题更安全,更自由,当然你也可以选择到www.kernel.org下载标准的内核心,本人建议如果你的服务器是品牌服务器使用rhel centos oracle-linux更放心点,如果是自己diy的或者在vps上的系统请使用debian,他会帮你把性能提到最高!

         还有一点是如果你是kvm狂热分子,我建议你使用rhel centos oracl-linux作为kvm基础主机,因为kvm很多开发,测试工作都是在rhel上进行的!其实还有一个选择不同于centos和scientific linux就是oracle linux

由于有大公司的支持我比较喜欢他,下载iso和更新补丁都是免费的,还有uel内核更是优秀,推荐centos scientifc朋友选择他。。

        再来看看整体上linux 和 freebsd的使用方向,由于linux使用了ext4等高级文件系统,读写都很高效,所以linux一般可以做web服务器,数据库服务器最多,而freebsd等做静态web,防火墙,路由器(版权更自由,很多国内网络设备商使用),其他的桌面系统请使用xp!

互联网如何做流量

做流量、做用户不是一劳永逸的,必须是一个机动化、持久化、长期的运作。

为什么要做流量?

首先,做流量本质上是做用户,做产品。这不是雇几个小孩,花钱买广告, 或雇几个商务运营就可以自动解决的事情。本质上需要CEO、产品经理自己去想,而这里面其实误区非常多。

一个错误是,简单化冲指标。当年的互联网公司,无论是视频网站还是财经网站,经常在网盟里放一些丰胸、裸女这种火爆的标题,把流量导到自己的网站。他们投入很多来提升自己网站近期的运营指标。但是,这真的会带来实质性的效果吗?道理听起来很简单,一到执行层面是非常容易忘记的。实际上互联网的推广,包括前段时间团购网站的推广,80%甚至90%花出去的钱没有意义。

另一个错误是忽视产品。产品、用户获取和运营实际上是三位一体的。不少产品出身的创始人,相信只要产品本身做好了,接下来推广就很简单了。作流量实际上就是产品如何到达用户,这和产品本身是一样重要的,也是个产品问题。比如Zynga, 他的早期游戏本身其实和之前的没有区别,但它是第一批很好的利用了Facebook把游戏从核心玩家到达了蓝海用户. 新的用户到达方法本身就能成为巨大的创新。

第二个基本问题,是什么时候开始花钱获得用户。大部分做流量的方法其实不用花钱。靠自己产品的性能和运营获得用户,本来是获取用户的正当方法,但是为什么要花钱做用户?答案可能有两个:一,加速增长。二,需要种子用户。

这两个都是很有道理的答案。实际操作过程中有两种情况,一是当你获取的用户能够挣钱,回报多于付出的话,你是可以无限制地花钱获得用户,这是毋庸置疑的。很多网游都是这样。

但是如果你赔钱获取用户,你的目标应该是达到自增长的一个点。按照互联网的习惯,当一个品牌或用户群达到一定密度之后,接下来就能实现一定的自增长。如果不是特别乱的情况下,真实的用户、活跃的用户达到百万级别,或者口碑达到一定的级别,加上真实的美誉度,真实的搜索指数能过万,产品本身又好,就能获得自增长。而去做用户增长,目的就是为了尽快达到这个自增长点。

如果是这样的话,其实目的就很明确。你要搞清楚那个点是什么?达到那个点需要的真实指标是什么?如果你做的所有推广是有助于达到那个点的话,就是有效的;如果无助于你达到那个点,比如当年某财经门户找了一些裸女图片放在网络上吸引点击,虽然指标是达到了,但实际上对你积累真实指标达到那个点没有任何帮助,这就属于完全白费。

做流量的三个“相对真理”

最基本的理念梳理完毕之后,接下来就是我自己这么多年总结的几个相对真理吧。

先说一次传播。一次传播的第一个绝对真理是,在任何一个特定的方法和特定的渠道内你能获取的总流量是有限的,而且你想获取的越多,它的单价越贵,成本越高。

无论是门户网站、搜索引擎还是其他,符合你目标的总用户就是这么多。以搜索引擎为例,里面有最适合你的和最便宜的关键字,比如,你投资一个关键字,搜索流量一天就五千个,这些获取过来是最便宜的。但是如果你想一天获取一万个流量,那第二个五千流量就去找跟你重合度更低的关键字,但是跟你的用户匹配比例更低,可能拍卖价格更高,效果更差。总之,如果你想再获得五千个流量的话,就更糟糕。

这就导致两个现象,A,你对于获取流量必须要有非常清晰的认识;B,你获取流量的渠道必须是多元化的。

第二个相对真理是,所有的流量有通用的和专用的区别。你从各种各样的用户入口获得所需要的流量,可以是免费的,可以是收费的,但是都要付出代价。这些资源交换的代价里,凡是只有你才能用、而别人用起来不方便或者对别人没有用的流量,反而是越便宜的流量。凡是对所有人都有用、人人拿出来都可以给自己引导用户的,则是非常贵的流量。

举一个例子,谁放到hao123首页,对它都有用,这样的位置就很贵。但是早年的小说网站非常不值钱,五千块就可以把千万级别流量的小说网站的关键位置包月。因为在那个年代,那个流量无论放什么广告,做什么推广都没有用。但是那个流量后来在推广页游却非常有用。

第三个相对真理是,任何流量的做法都不是长期有效,都有时间不长的窗口期,衰退期,而最早发现某个流量的最好挖掘方法的人受益最多。这种方法很快就会达到一个很高的价格,然后逐渐到了衰退期。

比如早年我在谷歌的时候,2006年获取网吧流量是非常便宜的。一是没有人获取,二是没有人知道怎么从网吧把流量给装回来。很多人不但不知道价格,也不知道方法。包括2003年的时候,最早一波知道怎么做搜索引擎优化的站长,用得最好的人占很大的优势。

但是,用户的入口在不断的变化,用户入口本身的规则和方法也在不断变化。所以做流量、做用户不是一劳永逸的,必须是一个机动化、持久化、长期的运作。

每个月都会有一些方法从非常划算变成一般,甚至有些会被取代,然后一些新的渠道和方法会萌芽。比如腾讯开放微信接口了,苹果发布ios6了,任何变化都要想一想和我有什么关系。

具体细节和做法

1、有效用户是谁?