Tag Archive for 'PHP'

Page 2 of 5

PHP加Shell实现多进程

看到这个标题,大家可能要说我没常识,php根本不支持多线程啊,没错,php本身是不支持多线程,但是别忘了php的好搭档,apache和linux可是支持的,呵呵,lamp才是最佳组合,还在使用win服务器的现在知道为什么要用linux吧?好久没在phpchina说教了,今天水一帖,写个简单的代码演示下如何借助shell脚本实现多线程。

先写个简单的php代码,这里为了让脚本执行时间更长,方便看效果,sleep一下,呵呵!先看下test.php的代码:

<?php
for ($i=0;$i<10;$i++) {
echo $i;
sleep(10);
}

在看下shell脚本的代码,非常简单

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
/usr/bin/php -q /var/www/html/test.php &
done

注意到在请求php代码的那行有一个&符号吗,这个是关键,不加的话是不能进行多线程的,&表示讲服务推送到后台执行,因此,在shell的每次的循环中不必等php的代码全部执行完在请求下一个文件,而是同时进行的,这样就实现了多线程,下面运行下shell看下效果,这里你将看到10个test.php进程再跑,再利用linux的定时器,定时请求这个shell,在处理一些需要多线程的任务,例如,批量下载时,非常好用!

Emacs PHP 数组缩进问题解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(add-hook 'php-mode-hook
          (lambda ()
            (c-set-style "bsd")
            (setq c-indent-level 4)
            (setq c-continued-statement-offset 4)
            (setq c-brace-offset -4)
            (setq c-argdecl-indent 0)
            (setq c-label-offset -4)
            (setq c-basic-offset 4)
            (setq tab-width 4)
            (setq indent-tabs-mode nil)
            (c-set-offset 'case-label '+)
            (c-set-offset 'arglist-close 'c-lineup-arglist-operators)
            (c-set-offset 'arglist-intro '+)
            (c-set-offset 'arglist-cont-nonempty 'c-lineup-math)))

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.