传统的 session 是写入到服务器文件中,可以在 php.ini 中看出,清单如下

session.save_handler = files
session.save_path = “sess保存路径”

但是,如果网站用户很多的话,session 的访问将势必影响网站的速度。因为文件的读取速度是很低的。
众所周知,memcache 作为内存缓存服务器,通过哈希算法,把数据以key->value的形式进行读取,其速度是远远高于文件的读取。
将 session 保存到 memcache 服务器的配置如下:
方式一:
打开 php.ini 文件,修改下面两个参数:

session.save_handler = memcache
session.save_path = “tcp://Mem服务器1:端口号,tcp://Mem服务器2:端口号…”

方式二:
在 php 文件中使用 ini_set 函数,进行配置,此方法会解决共享服务器的 php 的配置问题

<?php
….
ini_set(“session.save_handler”, “memcache”);
ini_set(“session.save_path”, “tcp://Mem服务器1:端口号,tcp://Mem服务器2:端口号…”);
….
?>

Read More →

PhPStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。Phpstrom的一款名为Magicento的插件对快速创建Magento插件十分有用。

常用快捷键

设置快捷键:File -> Settings -> IDE Settings -> Keymap -> 选择“eclipse” -> 然后“Copy”一份 -> 再个性化设置(自己习惯的)快捷键

常用快捷键(keymaps:Default情况下)

Esc键编辑器(从工具窗口)
F1 帮助 千万别按,很卡!
F2(Shift+F2) 下/上高亮错误或警告快速定位
F3 向下查找关键字出现位置
F4 查找变量来源
F5 复制文件/文件夹
F6 移动
F11 切换书签
F12 返回到以前的工具窗口

注意:部分快捷键,必须在没有更改快捷键的情况下才可以使用

查询快捷键
CTRL+N 查找类
CTRL+SHIFT+N 查找文件,打开工程中的文件(类似于eclipse中的ctrl+shift+R),目的是打开当前工程下任意目录的文件
CTRL+SHIFT+ALT+N 查 找类中的方法或变量(JS)
CIRL+B 找变量的来源,跳到变量申明处
CTRL+ALT+B 找所有的子类
CTRL+SHIFT+B 找变量的 类
CTRL+G 定位行,跳转行
CTRL+F 在当前窗口查找文本
CTRL+SHIFT+F 在指定路径查找文本
CTRL+R 当前窗口替换文本
CTRL+SHIFT+R 在指定路径替换文本
ALT+SHIFT+C 查找修改的文件,最近变更历史
CTRL+E 最近打开的文件
F3 查找下一个
SHIFT+F3 查找上一个
F4 查找变量来源
CTRL+ALT+F7 选 中的字符 查找工程出现的地方
ALT+F7 直接查询选中的字符
Ctrl+F7 文件中查询选中字符

自动代码
ALT+回车 导入包,自动修正
CTRL+ALT+L 格式化代码
CTRL+ALT+I 自动缩进
CTRL+ALT+O 优化导入的类和包
CTRL+E 最近更改的文件/代码
CTRL+SHIFT+SPACE 切换窗口
CTRL+SPACE空格 代码自动完成,代码提示,一般与输入法冲突
CTRL+ALT+SPACE 类 名或接口名提示(与系统冲突)
CTRL+P 方法参数提示,显示默认参数
CTRL+J 自动代码提示,自动补全
CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里
ALT+INSERT 生成代码(如GET,SET方法,构造函数等)

复制快捷方式
F5 复制文件/文件夹
CTRL+C 复制
CTRL+V 粘贴
CTRL+X 剪 切,删除行
CTRL+D 复制行
Ctrl + Y 删除行插入符号
CTRL+SHIFT+V 可以复制多个文本

高亮
CTRL+F 选中的文字,高亮显示 上下跳到下一个或者上一个
F2(Shift+F2) 高亮错误或警告快速定位
SHIFT+F2 高亮错误或警告快速定位
CTRL+SHIFT+F7 高亮显示多个关键字.
本地历史VCS/SVN
Alt +反引号(’) 快速弹出VCS菜单
Ctrl + K 提交项目VCS
Ctrl + T 更新项目从VCS
Alt + Shift + C 查看最近发生的变化

其他快捷方式
CTRL+Z 倒退(代码后悔)
CTRL+SHIFT+Z 向前
CTRL+H 显 示类结构图
Ctrl +F12 文件结构弹出
Ctrl+Shift+H 方法的层次结构
Ctrl+Alt+H 呼叫层次
CTRL+Q 显示代码注释
CTRL+W 选中代码,连续按会 有其他效果
Ctrl+Shift+W 减少当前选择到以前的状态
CTRL+B 转到声明,快速打开光标处的类或方法说明注释(CTRL + 鼠标单击 也可以)
CTRL+O 魔术方法
CTRL+/ 注释//取消注释
CTRL+SHIFT+/ 注释/*…*/
CTRL+ [] 光标移动到 {}[]开头或结尾位置
CTRL+SHIFT+[] 选中块代码,可以快速复制
ctrl + ‘-/+’: 可以折叠项目中的任何代码块,包括htm中的任意nodetype=3的元素,function,或对象直接量等等。它不是选中折叠,而是自动识别折叠。

ctrl + ‘.’: 折叠选中的代码的代码

Ctrl+Shift+U 选中的字符大小写转换
ctrl+shift+i 快速查看变量或方法定义源
CTRL+ALT+F12 资源管理器打开文件夹,跳转至当前文件在磁盘上的位置
ALT+F1 选择当前文件或菜单中的任何视图工具栏
SHIFT+ALT+INSERT 竖编辑模式

CTRL+ALT ←/→ 返回上次编辑的位置
ALT+ ←/→ 切换代码视图,标签切换
ALT+ ↑/↓ 在方法间快速移动定位
alt + ‘7’: 显示当前的类/函数结构。类似于eclipse中的outline的效果。试验了一下,要比aptana的给力一些,但还是不能完全显示prototype下面的方法名。
SHIFT+F6 重命名,重构 当前区域内变量重命名/重构
不但可以重命名文件名,而且可以命名函数名,函数名可以搜索引用的文件,还可以重命名局部变量。还可以重命名标签名。在sublime text中有个类似的快捷键:ctrl+shift+d。

ctrl+shift+enter(智能完善代码 如 if())
ctrl+shift+up/down(移动行、合并选中行,代码选中区域 向上/下移动)
CTRL+UP/DOWN 光标跳转到编辑器显示区第一行或最后一行下
ESC 光标返回编辑框
SHIFT+ESC 光 标返回编辑框,关闭无用的窗口
CTRL+F4 关闭当前的编辑器或选项卡

Ctrl + Alt + V引入变量
Ctrl + Alt + F 类似引入变量
Ctrl + Alt + C引入常量

Ctrl + Tab 键切换选项卡和工具窗口
Ctrl + Shift + A 查找快捷键
Alt + #[0-9] 打开相应的工具窗口
Ctrl + Shift + F12 切换最大化编辑器
Alt + Shift + F 添加到收藏夹
Alt + Shift + I 检查当前文件与当前的配置文件
Ctrl +反引号(`) 快速切换目前的配色/代码方案/快捷键方案/界面方案
Ctrl + Alt + S 打开设置对话框(与QQ冲突)
运行
Alt + Shift + F10 选择的配置和运行
Alt + Shift + F9 选择配置和调试
Shift + F10 运行
Shift + F9调试
Ctrl + Shift + F10运行范围内配置编辑器
Ctrl + Shift + X运行命令行
调试
F8步过
F7步入
Shift + F7智能进入
Shift + F8步骤
ALT + F9运行到光标
Alt + F8计算表达式
F9恢复程序
Ctrl + F8切换断点
Ctrl + Shift + F8查看断点
导航
Shift + Esc键隐藏活动或最后一个激活的窗口
Ctrl + Shift + F4关闭活动运行/消息/ / …选项卡
Ctrl + Shift + Backspace键导航到最后编辑的位置
Ctrl + Alt+B 到实施(S)
Ctrl + Shift+I 打开快速定义查询
Ctrl + U 转到super-method/super-class
Alt + Home 组合显示导航栏
书签
Ctrl + F11切换书签助记符
Ctrl +#[0-9]转到编号书签
Shift + F11显示书签
编辑
Ctrl + Q 快速文档查询
ALT + INSERT 生成的代码…器(getter,setter方法,构造函数)
Ctrl + O 覆盖方法
Ctrl + I 实现方法
Alt + Enter 显示意图的行动和快速修复
Shift + Tab 键缩进/取消缩进选中的行
Ctrl + Shift + J 智能线连接(仅适用于HTML和JavaScript)
Ctrl + Enter 智能线分割(HTML和JavaScript)
Shift + Enter 开始新的生产线
Ctrl + Delete 删除字(word)
Ctrl + Backspace删除字开始
Ctrl +小键盘+ / – 展开/折叠代码块
Ctrl + Shift +小键盘+展开全部
Ctrl + Shift +数字键盘关闭全部

安装
Laravel框架使用 Composer 执行安装和依赖管理。如果还没有安装的话,现在就开始 安装 Composer 吧。
安装Composer之后,你就可以通过命令行使用如下命令安装Laravel了:
composer create-project laravel/laravel your-project-name
或者,你可以从 Github仓库 下载。接下来,在 安装Composer 之后,在项目根目录下执行 composer install 命令。该命令将会下载以及安装框架的依赖组件。
写入权限
安装完 Laravel ,你还需要为web服务器设置 app/storage 目录的写入权限。请参考 安装 一节以获取更多关于配置方面的信息。
目录结构
安装完框架后,你需要熟悉一下该项目的目录结构。app 文件夹包含了一些例如 views ,controllers 和 models 目录。 程序中大部分代码将要存放这些目录下。你也可以查看一下 app/config 文件夹里一些配置项目。
路由
我们开始创建我们第一个路由。在 Laravel,简单路由的方法是闭包。打开 app/routes.php 文件加入如下代码:
Route::get(‘users’, function()
{
return ‘Users!’;
});
现在,你在 web 浏览器输入 /users,你应该会看到 Users! 输出。真棒!已经创建了你第一个路由。
路由也可以赋予控制器类。例如:
Route::get(‘users’, ‘UserController@getIndex’);
该路由告知框架 /users 路由请求应该调用 UserController 类的 getIndex 方法。要查看更多关于路由控制器信息,查看 控制器文档 。

Read More →

大多数我们传递参数的时候用的是

$data = [
‘fisrst’=>’values’,
‘last’=>’last values’,
];

$tpl->assign(‘mydata’,$data);

其实我们也可以这样传递参数

$fisrst = ‘values’;
$last = ‘last values’;

$tpl->assign(‘mydata’,compact(‘fisrst’,’last’));

一下是函数说明

array compact ( mixed $varname [, mixed $… ] )
创建一个包含变量与其值的数组。

对每个参数,compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值。简单说,它做的事和 extract() 正好相反。返回将所有变量添加进去后的数组。

任何没有变量名与之对应的字符串都被略过。

Read More →

在phpMyAdmin中提示“Configuration of pmadb… not OK”,这个问题不大,不影响使用,仅仅是一个警告。如果不想总是看见这个警告,可以用如下办法来解决。

解决办法
(1)初始化phpmyadmin数据库
cd /path/phpmyadmin/sql
mysql -u root -p < create_tables.sql
Enter password:

(2)创建数据库用户
CREATE USER ‘pma’@’localhost’ IDENTIFIED BY ‘pmapass’;
GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO ‘pma’@’localhost’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

(3)配置config.ini.php文件
将如下的程序段取消注释
/* User used to manipulate with storage */
$cfg[‘Servers”;][$i][‘controlhost’] = ”;
$cfg[‘Servers’][$i][‘controlport’] = ”;
$cfg[‘Servers’][$i][‘controluser’] = ‘pma’;
$cfg[‘Servers’][$i][‘controlpass’] = ‘pmapass

/* Storage database and tables */
$cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;
$cfg[‘Servers’][$i][‘bookmarktable’] = ‘pma__bookmark’;
$cfg[‘Servers’][$i][‘relation’] = ‘pma__relation’;
$cfg[‘Servers’][$i][‘table_info’] = ‘pma__table_info’;
$cfg[‘Servers’][$i][‘table_coords’] = ‘pma__table_coords’;
$cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma__pdf_pages’;
$cfg[‘Servers’][$i][‘column_info’] = ‘pma__column_info’;
$cfg[‘Servers’][$i][‘history’] = ‘pma__history’;
$cfg[‘Servers’][$i][‘table_uiprefs’] = ‘pma__table_uiprefs’;
$cfg[‘Servers’][$i][‘tracking’] = ‘pma__tracking’;
$cfg[‘Servers’][$i][‘userconfig’] = ‘pma__userconfig’;
$cfg[‘Servers’][$i][‘recent’] = ‘pma__recent’;
$cfg[‘Servers’][$i][‘favorite’] = ‘pma__favorite’;
$cfg[‘Servers’][$i][‘users’] = ‘pma__users’;
$cfg[‘Servers’][$i][‘usergroups’] = ‘pma__usergroups’;
$cfg[‘Servers’][$i][‘navigationhiding’] = ‘pma__navigationhiding’;
$cfg[‘Servers’][$i][‘savedsearches’] = ‘pma__savedsearches’;
$cfg[‘Servers’][$i][‘central_columns’] = ‘pma__central_columns’;