Windows 8应用商店无法连接网络的解决方法

        Windows 8 全新的Modern UI(Metro)的开始菜单以说是Window 系统一个巨大的变革,微软做出这样的变革也是下了决心的。我们可以在里面轻松的更安全下载常用的程序,浏览新闻资讯,可很多安装Windows 8 的朋友可能遇到这一问题,在打开开始中的Windows应用商店,需要连接到互联网,加载了一会儿会提示说“无法访问Internet”,可我们的电脑的确已经连接到网络了,在开始中其他的应用程序能够访问网络,在桌面环境下,访问网络也完全没有问题,该如何解决此类问题呢?
网上很多人的说法是把DNS服务器改成谷歌的8.8.8.8,备用DNS服务器改成8.8.4.4,本人也是试过的,刚刚开始时可以的,成功连接了网络,可是后来又不行了,我怀疑是不是谷歌的东西在天朝随时遭受封杀,于是就把DNS服务器改成浙江电信的202.96.96.68和202.96.104.18,修改之后立刻可以访问了!!!完全没有问题!
以下是全国DNS服务器地址大全的地址,如果不行大家可以进去随便选几个,最好选离自己家近的:
http://blog.sina.com.cn/s/blog_5fcdb04a0100d8at.html

 

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=1459

深入了解Memcache(原理、机制详细介绍)

        Web应用程序都需要与数据打交道,它要能够处理数据:既要存储一个用户提交的数据,又要检索要显示的数据,这是一个Web应用程序的主要功能。数据是关系到可伸缩性方面最重要的议题,它决定了应用程序能够达到多快的速度和多高的效率。我们知道MySQL是一个关系型的数据库系统,组织数据并存储在MySQL中,而且它也是Web应用程序最主要的数据源。数据库是持久的数据存储,其中存储着我们所有的数据,而且Web应用程序也可以使用数据库中的数据,但是,要从一个数据库中检索数据确实需要付出一些代价,这取决于所执行的数据库查询的类型及其后续检索的结果集。

        为了让应用程序能够正常运行,我们经常需要从数据库中检索各种类型的数据,包括频繁变化的数据,如用户或者会话数据;以及不经常变化的数据,如实际的页面内容。为了得到这些数据必须访问数据库,这样将严重影响性能,从而也成为需要考虑的主要问题所在。这就是不要总是去访问数据库来获取所需的数据,而是使用缓存的原因。这正是memcached要解决的问题。

        memcached是一个高性能、分布式的内存对象缓存系统,它实际上就是一个简单的内存服务器,能够为应用程序存储数据提供一个缓存层,从而减轻数据库的负担。存储在memcached中的数据并不持久,这意味着当memcached的服务器关机或者重新启动时,它的内容就消失了,而且它没有故障转移或者认证,因此完全由应用程序使用memcached来实现数据的管理和不断更新。

        memcached有一个称为最近最少使用(Least Recently Used LRU)的缓存的结构,从而当memcached的存储空间满时,最早存储和刚被访问过的数据将会被更新的内容替换。另外,memcached对于存储的数据还提供到期的超时设定,从而可以把数据存储设置为到将来某个时间到期,也可以什么也不设置。当memcached达到它的存储容量时,将会先替换到期的数据,然后替换刚被使用过的数据。

        memcached可以运行在任何配置类型中:一台或者多台服务器上,或者甚至在同一台服务器上运行多个实例。memcached的服务器只提供一个存储结构,在这个存储结构中,数据按照键值存储,而检索功能则通过使用一个散列查找表来实现。从真正意义上把它们全部粘连在一起的工作是在memcached的客户端实现的,在那里把一个散列的键值引用到正在被存储或者检索的数据上。它使用一种特殊的散列算法来决定某一个或者多个键的请求应该被发送到哪几台服务器中。一旦客户端知道某一特定条目请求的是哪台服务器,它就会以并行的方式把请求发送到相应的服务器上。然后每台服务器使用它自己的散列键查找表来检索存储条目,随后把结果发送回客户端。接着客户端把这些结果聚集在一起以供应用程序使用。

        由于memcached使用内存而不是磁盘来存储数据,因而它存储与检索数据的速度是特别快捷的(本站的http://www.tonitech.com/?p=263一文有详细讲解这一原理)。它对CPU的要求也不太高,在同一台运行Apache Web服务的服务器上也可以运行memcached,或者在有空闲内存可用的任何服务器上也能运行memcached。

        对于memcached,一种普通的体系架构设置是拥有许多简单配置的服务器,而每台服务器的唯一目的就是提供内存。因为,相对于数据库对CPU能力的需求更大而言,memcached却是对于内存容量需求更大,所以,在针对服务器的硬件投入方面,更容易满足memcached的要求。这样,就可以使用多台较低端的服务器来为应用程序提供一个分布式内存缓存层,从而在可伸缩性方面更容易实现,费用也不太昂贵。

        在memcached出现之前,开发人员想避免通过访问数据库来获取数据,曾经使用过各种模式来缓存数据。其中有一种方法是在Web进程中缓存数据(因为mod-perl是持久的)。这种方法的一个致命问题是,每个子进程最后都拥有一份其他进程己经缓存的数据副本,从而导致重复数据填充在各个线程及其子线程中。无论如何,最佳的缓存方法当然是使用内存,而不是磁盘。

        随着技术的发展,出现了memcached,当初,Brad Fitzpatrick开发的memcached只是用于Livej ournal.com网站,他想要有一个比那些当时已经存在的方案更好的缓存解决方案。Livejournal是一个社交网站,这个网站每天有成千上万的用户和动态页面流量。原先成千上万的页面流量的所有这些数据都是通过访问数据库来实现的,而通过使用memcached现在只需要一个轻量级的缓存就可以获取数据了,从而减轻了数据库的负担,可以说数据库几乎没有任何负担。

Apache服务器ab工具使用简介

服务器负载太大而影响程序效率是很常见的,Apache服务器自带有一个叫ab(ApacheBench)的工具,在bin目录下。ab专门用于HTTP Server的benchmark testing,可以同时模拟多个并发请求,使用这个轻巧的工具我们可以对服务器进行负载测试。

今天在公司也用它作一些测试,现在整理了下它的一些东西分享下。

首先我们要得到Apache服务器的目录下bin的路径,我电脑中的路径是D:\wamp\bin\apache\Apache2.2.21\bin,打开cmd,转到这个目录下,在其中输入:ab -n 10 -c 10 http://www.tonitech.com/ 这条指令,这条指令的意思是:ab -n 全部请求数 -c 并发数 测试URL这里值得注意的是,如果你的测试URL是一个网站的网址,请记得在其后加上/,否则会无法工作。

以下是我运行的结果:

D:\wamp\bin\apache\Apache2.2.21\bin>ab -n 10 -c 10 http://www.tonitech.com/

This is ApacheBench, Version 2.3 <$Revision: 655654 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.tonitech.com (be patient)…..done

Server Software:        Microsoft-IIS/6.0  //Microsoft-IIS服务器版本6.0

Server Hostname:        www.tonitech.com  //服务器主机名

Server Port:            80  //服务器端口
Document Path:          /  //测试的页面文档

Document Length:        32639 bytes  //文档大小
Concurrency Level:      10  //并发数

Time taken for tests:   13.548 seconds  //整个测试持续的时间

Complete requests:      10  //完成的请求数量

Failed requests:        0  //失败的请求数量

Write errors:           0

Total transferred:      331070 bytes  //整个场景中的网络传输量

HTML transferred:       326390 bytes  //整个场景中的HTML内容传输量

Requests per second:    0.74 [#/sec] (mean)  //每秒事务数 ,后面括号中的 mean 表示这是一个平均值

Time per request:       13547.775 [ms] (mean)  //平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值

Time per request:       1354.777 [ms] (mean, across all concurrent requests)  //每个请求实际运行时间的平均值

Transfer rate:          23.86 [Kbytes/sec] received  //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Connection Times (ms)  //网络上消耗的时间的分解

              min  mean[+/-sd] median   max

Connect:        1    2   0.8      2       3

Processing:  2163 3981 3420.2   2957   13540

Waiting:     1305 3204 3595.3   2096   13169

Total:       2164 3983 3420.0   2959   13541

//以下是整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于2959毫秒,66% 的用户响应时间小于3074毫秒,最大的响应时间小于13541 毫秒。由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数。

Percentage of the requests served within a certain time (ms)

  50%   2959

  66%   3074

  75%   3974

  80%   4008

  90%  13541

  95%  13541

  98%  13541

  99%  13541

 100%  13541 (longest request)

下面是ab的指令中参数的介绍:

-n requests     全部请求数

-c concurrency  并发数

-t timelimit    最传等待回应时间

-p postfile     POST数据文件

-T content-type POST Content-type

-v verbosity    How much troubleshooting info to print

-w              Print out results in HTML tables

-i              Use HEAD instead of GET

-x attributes   String to insert as table attributes

-y attributes   String to insert as tr attributes

-z attributes   String to insert as td or th attributes

-C attribute    加入cookie, eg. ‘Apache=1234. (repeatable)

-H attribute    加入http头, eg. ‘Accept-Encoding: gzip’

                Inserted after all normal header lines. (repeatable)

-A attribute    http验证,分隔传递用户名及密码

-P attribute    Add Basic Proxy Authentication, the attributes

                are a colon separated username and password.

-X proxy:port   代理服务器

-V              查看ab版本

-k              Use HTTP KeepAlive feature

-d              Do not show percentiles served table.

-S              Do not show confidence estimators and warnings.

-g filename     Output collected data to gnuplot format file.

-e filename     Output CSV file with percentages served

-h              Display usage information (this message)

2. 开始学习Zend Framework(Apache虚拟主机的配置)

    在第1节中,我们可以打开http://localhost/你的项目目录/public/访问你的ZF工程,就对于开发来说,这样还是比较麻烦的,因为你每次开发的时候要记住这一大串的目录或者点击多次才能进入。对于服务器,好处是可以在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站,可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口, 也可让多个网站拥有不同的域名。

    配置Zend Framework工程虚拟主机的步骤:

    1. 进入你的ZF工程目录下的docs文件夹,打开README.txt,复制类似以下的内容:

<VirtualHost *:80>
   DocumentRoot "D:/wamp/www/你的项目目录/public"
   ServerName .local

   # This should be omitted in the production environment
   SetEnv APPLICATION_ENV development

   <Directory "D:/wamp/www/你的项目目录/public">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>

</VirtualHost>

在右下角的WAMP服务器图标上左击: 

wamp

打开Apache下的http.conf,然后将上面复制的那段内容黏贴到http.conf的最下面。你可以将内容里的“ServerName .local”修改成你想要的任何域名,比如我设置成:“ServerName www.tony.com”。

2. 进入你的C:\Windows\System32\drivers\etc这个目录,用记事本打开hosts,在里面添加一句:“127.0.0.1       www.tony.com”,这个域名就是上面的ServerName。 然后配置Apache的Rewrite模块,这个非常重要!左击WAMP服务器的图标->Apache->Apache模块,向下寻找rewrite_module,点击之后它前面打勾就解决问题了。

3. 最后一步就是重启服务器,左击WAMP服务器的图标->重新启动所有服务,然后在浏览器中输入你刚刚设置的域名,我的是www.tony.com,是不是就看到了你的Zend Framework工程的欢迎页面了呢?你如果用360安全浏览器打开的话,应该会提示危险信息,说域名重定向。

 

如果有疑问,请留言或者发送电子邮件联系博主Tony。

PHP获取客户端和服务器端相关信息

服务器变量 $_SERVER 详解:

1、$_SERVER[‘PHP_SELF’] — 获取当前正在执行脚本的文件名

2、$_SERVER[‘SERVER_PROTOCOL’] — 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。

3、$_SERVER[‘REQUEST_TIME’] — 请求开始时的时间戳。从 PHP 5.1.0 起有效。和time函数效果一样。

4、$_SERVER[‘argv’] — 传递给该脚本的参数。我试了下,get方法可以得到$_SERVER[‘argv’][0];post方法无法给他赋值。

5、$_SERVER[‘SERVER_NAME’] — 返回当前主机名。

6、$_SERVER[‘SERVER_SOFTWARE’] — 服务器标识的字串,在响应请求时的头信息中给出。如Microsoft-IIS/6.0

7、$_SERVER[‘REQUEST_METHOD’] — 访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。

8、$_SERVER[‘QUERY_STRING’] — 查询(query)的字符串(URL 中第一个问号 ? 之后的内容)。

9、$_SERVER[‘DOCUMENT_ROOT’] — 当前运行脚本所在的文档根目录。在服务器配置文件中定义。 如E:\server

10、$_SERVER[‘HTTP_ACCEPT’] — 当前请求的 Accept: 头信息的内容。

11、$_SERVER[‘HTTP_ACCEPT_CHARSET’] — 当前请求的 Accept-Charset:头信息的内容。例如:“iso-8859-1,*,utf-8”。

12、$_SERVER[‘HTTP_ACCEPT_ENCODING’] — 当前请求的 Accept-Encoding:头信息的内容。例如:“gzip”。

13、$_SERVER[‘HTTP_ACCEPT_LANGUAGE’] — 当前请求的 Accept-Language:头信息的内容。例如:“en”。

14、$_SERVER[‘HTTP_CONNECTION’] — 当前请求的 Connection:头信息的内容。例如:“Keep-Alive”。

15、$_SERVER[‘HTTP_HOST’] — 当前请求的 Host: 头信息的内容。

16、$_SERVER[‘HTTP_REFERER’] — 链接到当前页面的前一页面的 URL 地址。

17、$_SERVER[‘HTTP_USER_AGENT’] — 返回用户使用的浏览器信息。也可以使用 get_browser() 得到此信息。

18、$_SERVER[‘HTTPS’] — 如果通过https访问,则被设为一个非空的值,否则返回off.

19、$_SERVER[‘REMOTE_ADDR’] — 正在浏览当前页面用户的 IP 地址。

20、$_SERVER[‘REMOTE_HOST’] — 正在浏览当前页面用户的主机名。反向域名解析基于该用户的REMOTE_ADDR。如本地测试返回127.0.0.1

21、$_SERVER[‘REMOTE_PORT’] — 用户连接到服务器时所使用的端口。我在本机测试没通过,不知道什么原因。

22、$_SERVER[‘SCRIPT_FILENAME’] — 当前执行脚本的绝对路径名。如返回E:\server\index.php

23、$_SERVER[‘SERVER_ADMIN’] — 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。

24、$_SERVER[‘SERVER_PORT’] — 服务器所使用的端口。默认为“80”。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP端口。

25、$_SERVER[‘SERVER_SIGNATURE’] — 包含服务器版本和虚拟主机名的字符串。

26、$_SERVER[‘PATH_TRANSLATED’] — 当前脚本所在文件系统(不是文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。 Apache 2 用 户可以使用 httpd.conf 中的AcceptPathInfo On 来定义 PATH_INFO。

27、$_SERVER[‘SCRIPT_NAME’] — 包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__包含当前文件的绝对路径和文件名(例如包含文件)。

28、$_SERVER[‘REQUEST_URI’] — 访问此页面所需的 URI。例如,“/index.html”。

29、$_SERVER[‘PHP_AUTH_DIGEST’] — 当作为 Apache 模块运行时,进行 HTTP Digest认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP 头内容(以便作进一步的认证操作)。

30、$_SERVER[‘PHP_AUTH_USER’]– 当 PHP 运行在 Apache 或 IIS(PHP 5 是ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。

31、$_SERVER[‘PHP_AUTH_PW’] — 当 PHP 运行在 Apache 或 IIS(PHP 5 是ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。

32、$_SERVER[‘AUTH_TYPE’]–当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP认证功能,这个变量便是认证的类型。

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=204