Tag Archive for 'PHP'

Facebook后台技术探秘

今天我们一起来了解Facebook背后的软件,看看作为当今世界上访问量最大的网站之一,Facebook是如何保证5亿用户的系统一直稳定可靠的运行。

Facebook的扩展性挑战

在我们讨论细节之前,这里有一些Facebook已经做的软件规模:

  • Facebook有570000000000每月页面浏览量 (据Google Ad Planner)
  • Facebook的照片量比其他所有图片网站加起来还多(包括Flickr等网站)
  • 每个月超过30亿张照片被上传
  • Facebook的系统服务每秒处理120万张照片,这不包括CDN服务中处理的照片
  • 每月超过25亿条的内容 (状态更新,评论等)被共享
  • Facebook有超过30,000服务器(这个数字是去年的)

Continue reading ‘Facebook后台技术探秘’

Poppen.de网站架构

在了解过世界最大的PHP站点,Facebook的后台技术后,今天我们来了解一个百万级PHP站点的网站架构:Poppen.de。Poppen.de是德国的一个社交网站,相对Facebook、Flickr来说是一个很小的网站,但它有一个很好的架构,融合了很多技术,如 Nigix、MySql、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5以及Tsung。

Poppen.de目前有200万注册用户数、2万并发用户数、每天20万条私有消息、每天25万登录次数。而项目团队有11个开发人员,两个设计,两个系统管理员。该站点的商业模式采用免费增值模式,用户可以使用搜索用户、给好友发送消息、上载图片和视频等功能。

如果用户想享受不受限制发送消息和上载图片,那么就得根据需要支付不同类型的会员服务,视频聊天及网站其他服务也采用同样的策略。 Continue reading ‘Poppen.de网站架构’

How to get current controller name and action name in Yii

To get current controller name/id inside your controller, or view

1
2
3
$controllerId = Yii::app()->controller->id;
//or
$controllerId = $this->getId();

To get current action name/id being executed, if you are inside beforeAction() or afterAction(), use the received CAction argument

1
2
3
4
5
//inside beforeAction or afterAction
public function beforeAction($action)
{
  $actionId = $action->id;
...

or just elsewhere inside your controller

1
$actionId = $this->getAction()->getId();

Drupal的theme开发

昨天在drupal7上搞了搞theme,发现alpha2还有一些地方不对。drupal比较麻烦的一个地方是更改了 theme.info 文件非要disable之后再enable才能生效。

drupal6应该还会主流一段时间,感觉drupal7的js太多了,非要那么多js吗?

如果用drupal6来开发一个门户站点效果如何,人员分配如何?我想国内很多设计师达不到这个要求,xhtml,css,js,php,sql 都要懂,xhtml,css,js精通。如果drupal精通,架构一个行业门户或者生活类的站点是非常高效的,至于优化,可以在服务器上下功夫。

Squid缓存PHP页面方法

1
2
3
4
5
<?php
header('Cache-Control: max-age=600, must-revalidate');
header('Pragma: cache');
header('Last-Modified: ' . date('D, d M Y H:i:s') . ' GMT');
header('Expires: ' . date ("D, d M Y H:i:s", time() + 600). " GMT");

YII 数据库连接(MySQL)

1
2
3
4
5
6
<?php
'class'=>'CDbConnection',
                'connectionString'=>'mysql:host=localhost;dbname=yiiblog;unix_socket=/opt/lampp/var/mysql/mysql.sock',
                'username'=>'root',
                'password'=>'password',
                'charset'=>'utf8',

发布一个简单的PHP框架

使用Smarty和Adodb类驱动模板与数据库。

Create better namespaces in PHP

Read from here. IBM developer works. PHP 5.3 new feature have namespace.

Kohanaphp新版本发布

Kohanaphp Framework

Kohanaphp Framework

Kohanaphp是一个基于CodeIgniter的PHP框架,继承了CI的优点:简洁、高效。与CakePHP不同的是,Kohanaphp尽可能的把事情做的简单,但却比CI做得更让开发者更友好,至少对于新手来说是这样的。现在这三者的速度是CI最快,但是功能最少,CakePHP最慢,但是功能强大,Kohanaphp则是在她们中间,更偏向与CI,因为其本身就是CI的衍生版本。

对于想快速开发小型项目或者是在线互动很小的项目。Kohanaphp一定是你最想要的PHP框架,忘记CakePHP的繁琐吧,忘记CI的过于简单,忘掉FleaPHP的本地化支持,你需要象Kohanaphp这样的框架,她做了你不想做了,把你自己想做的交给你。

Faster and faster, It’s all.

使用自由软件测试HTTP服务

一个测试HTTP服务器极限的好方法就是模拟高负载下的HTTP服务器, 有5款自由软件是您的最好选择: curl-loader, httperf, Siege, Tsung, and Apache JMeter.

  • httperf
    测试5000次连接,每次50个请求

    1
    httperf --server=localhost --uri=/ --num-conns=5000 --num-calls=50

    高级应用

    1
    2
    3
    httperf --client=0/1 --server=localhost --port=80 --uri=/ \
    --send-buffer=4096 --recv-buffer=16384 \
    --num-conns=5000 --num-calls=50

    你也可以尝试一下一个更简单的类httperf软件http_load.

  • Siege
    和httperf类似, 上手非常简单

    1
    siege localhost

    利用sproxy连接代理服务器

    1
    sproxy -v -o urls.txt

    使用代理服务器

    1
    siege -v --internet --file=urls.txt

参考文章: http://www.linux.com/feature/143896