大致步骤(1)安装mcrypt,(2)安装php对mcrypt的扩展,(3)重启apache
(1)、确认你的linux没有安装mcrypt库,如果已安装,跳过安装步骤 继续阅读“CentOS下php安装mcrypt扩展”
MangoLau's blogs.
大致步骤(1)安装mcrypt,(2)安装php对mcrypt的扩展,(3)重启apache
(1)、确认你的linux没有安装mcrypt库,如果已安装,跳过安装步骤 继续阅读“CentOS下php安装mcrypt扩展”
错误1:foreach循环后留下悬挂指针
在foreach循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法:
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
这里有个问题很多人会迷糊。循环结束后,$value并未销毁,$value其实是数组中最后一个元素的引用,这样在后续对$value的使用中,如果不知道这一点,会引发一些莫名奇妙的错误:)看看下面这段代码:
$array = [1, 2, 3];
echo implode(‘,’, $array), “\n”;
foreach ($array as &$value) {} // by reference
echo implode(‘,’, $array), “\n”;
foreach ($array as $value) {} // by value (i.e., copy)
echo implode(‘,’, $array), “\n”;
上面代码的运行结果如下:
1,2,3
1,2,3
1,2,2
你猜对了吗?为什么是这个结果呢? 继续阅读“PHP编程中10个最常见的错误”
1. If a method c++an be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化,就对它做静态声明。速率可提升至4倍。
2. echo is faster than print. echo 比 print 快。
3. Use echo’s multiple parameters instead of string concatenation. 使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接。
4. Set the maxvalue for your for-loops before and not in the loop. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值。
5. Unset your variables to free memory, especially large arrays. 注销那些不用的变量尤其是大数组,以便释放内存。
6. Avoid magic like __get, __set, __autoload 尽量避免使用__get,__set,__autoload.
7. require_once() is expensive require_once()代价昂贵。
8. Use full paths in includes and requires, less time spent on resolving the OS paths. 在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。
phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系
很有用;以下是redis官方提供的命令使用技巧:
下载地址如下:
https://github.com/owlient/phpredis(支持redis 2.0.4)
Redis::__construct构造函数
$redis = new Redis();
connect, open 链接redis服务
参数
host: string,服务地址
port: int,端口号
timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
注: 在redis.conf中也有时间,默认为300
pconnect, popen 不会主动关闭的链接
参考上面
bootstrap的位置在application/bootstrap.php。它负责建立Kohana的环境和执行的主响应。它是被index.php包含进去的。
bootstrap首先设置时区和语言环境,然后增加Kohana的autoloader使级联文件系统工作。你可以在这里添加你的应用程序需要的所有设置。
// Sample excerpt from bootstrap.php with comments trimmed down
// Set the default time zone.
date_default_timezone_set(‘America/Chicago’);
// Set the default locale.
setlocale(LC_ALL, ‘en_US.utf-8’);
// Enable the Kohana auto-loader.
spl_autoload_register(array(‘Kohana’, ‘auto_load’));
// Enable the Kohana auto-loader for unserialization.
ini_set(‘unserialize_callback_func’, ‘spl_autoload_call’);
kohana调用Kohana::init来初始化,并启用日志和配置读写器。
// Sample excerpt from bootstrap.php with comments trimmed down
Kohana::init(array(‘
base_url’ => ‘/kohana/’,
index_file => false,
));
// Attach the file writer to logging. Multiple writers are supported.
Kohana::$log->attach(new Kohana_Log_File(APPPATH.’logs’));
// Attach a file reader to config. Multiple readers are supported.
Kohana::$config->attach(new Kohana_Config_File);
您可以添加条件语句,使引导具有基于某些设置不同的值。例如,我们发现无论是现场检查$_ SERVER[‘HTTP_HOST’],并设置缓存,分析,等等。因此。这仅仅是一个例子,也有许多不同的方式来完成同样的事情。
// Excerpt from http://github.com/isaiahdw/kohanaphp.com/blob/f2afe8e28b/application/bootstrap.php
… [trimmed]
/**
* Set the environment status by the domain.
*/
if (strpos($_SERVER[‘HTTP_HOST’], ‘kohanaframework.org’) !== FALSE)
{
// We are live!
Kohana::$environment = Kohana::PRODUCTION;
// Turn off notices and strict errors
error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT);
}
/**
* Initialize Kohana, setting the default options.
… [trimmed]
*/
Kohana::init(array(
‘base_url’ => Kohana::$environment === Kohana::PRODUCTION ? ‘/’ : ‘/kohanaframework.org/’,
‘caching’ => Kohana::$environment === Kohana::PRODUCTION,
‘profile’ => Kohana::$environment !== Kohana::PRODUCTION,
‘index_file’ => FALSE,
));
… [trimmed]
模块使用Kohana::modules()加载进来的。包含模块是可选的。阵列中的每个键应该是模块的名称,并且该值是所述路径模块,相对或绝对的。
// Example excerpt from bootstrap.php
Kohana::modules(array(
‘database’ => MODPATH.’database’,
‘orm’ => MODPATH.’orm’,
‘userguide’ => MODPATH.’userguide’,
));
路由是由Route::set() 定义的
// The default route that comes with Kohana 3
Route::set(‘default’, ‘(<controller>(/<action>(/<id>)))’)
->defaults(array(
‘controller’ => ‘Welcome’,
‘action’ => ‘index’,
));
这种情况一般是没有安装 libmcrypt-devel
centos7默认yum源没有libmcrypt-devel这个包,所以只能借助第三方源或者编译安装,这里用的是第三方源
下载并安装EPEL
# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm
# yum repolist ##检查是否已添加至源列表
安装好第三方yum源后,
yum install libmcrypt-devel
在虚拟机中以最小化方式安装centos7,后无法上网,因为centos7默认网卡未激活。
可以设置
文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3
将 ONBOOT=no 改为 ONBOOT=yes
保存后重启网卡: service network restart
此时就可以上网了。
因为是最小化安装,此时ifconfig命令不能用,可用
命令:ip addr 查看分配网卡情况。
联网后可运行命令:
yum install net-tools
来安装ifconfig功能
此时virtualbox采用的网络连接方式为:网络地址转化(NAT)方式