forked from kenjey01/ci_for_sae
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
184 lines (152 loc) · 8.33 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
参考:
https://code.google.com/p/ci-sae/
https://github.com/wkii/CodeIgniter-for-SAE
修改日志:
-----------------------------------------------------------
支持主从数据库 读写分离
-----------------------------------------------------------
1.精简 system\database\drivers 仅留下mysql
2.修改配置 application\config\database.php,适应SAE环境
3.修改数据库驱动 system\database\DB_driver.php
修改初始化和simple_query函数。自动判断SQL语句的读或写,进行连接主或从数据库。
4.修改mysql驱动 system\database\drivers\mysql\mysql_driver.php
修改db_connect()函数,使其支持 连接的主从数据库。
-----------------------------------------------------------
缓存类 支持memcache和kvdb
-----------------------------------------------------------
----------数据缓存----------
1.修改memcache驱动 application\libraries\Cache\drivers\Cache_memcached.php
2.添加kvdb驱动 application\libraries\Cache\drivers\Cache_kvdb.php
3.删除文件缓存
4.删除apc缓存
5.原生CI的 system\libraries下Cache文件夹可删除
使用示例:
$this->load->driver('cache');
$this->cache->kvdb->save('key1','value1',0);
$this->cache->memcached->save('key2','value2',0);
echo $this->cache->kvdb->get('key1');
echo $this->cache->memcached->get('key2');
----------页面缓存----------
扩展Output核心页面缓存类 application\core\SAE_Output.php
1.修改扩展类前缀为"SAE_" application\config\config.php
$config['subclass_prefix'] = 'SAE_';
2.修改 application\core\SAE_Output.php
扩展_write_cache和_display_cache两个函数
使用代码:
只需要将下面的代码放入你的任何一个控制器(controller)的方法(function)内:
$this->output->cache(n);
更多使用参考 http://codeigniter.org.cn/user_guide/general/caching.html
----------Cache相关配置----------
以下针对配置文件为 application\config\config.php
1.key的前缀可通过修改值 $config['cache_path'],对memcache和kvdb的数据缓存、文件缓存有效。
若为空(默认),则默认前缀为'system_cache_'。即 $this->cache->kvdb->save('key', 'value', 10),实际存储的key为'system_cache_key'。
2.页面缓存默认使用kvdb方式,可修改 $config['sae_output_cache'] 设置缓存方式,可配置三种值,分别为:
(1) '' :即使使用了 $this->output->cache(n); 也不会缓存
(2) 'kvdb' :使用 KVDB 缓存 (默认) (需要开启SAE KVDB服务)
(3) 'memcache':使用 memcache 缓存 (需要开启SAE Memcache服务)
3.系统默认ttl (缓存过期时间)为60秒,若ttl设置为0,则数据永不过期。memcache和kvdb同样适用。
注意,由于kvdb方式没有过期删除机制,现修改为自动判断是否过期,若过期则删除。
-----------------------------------------------------------
Email类
-----------------------------------------------------------
使用SAE原生Mail类重构此部分代码。
因为SAE Mail暂只支持SMTP协议,且无密送功能,故删除以下参数:
useragent, mailpath, smtp_timeout, charset(默认强制utf8,否则中文会乱码), priority, crlf, bcc_batch_mode, bcc_batch_size
增加以下参数:
tls, compress, callback_url (参数说明见 http://apidoc.sinaapp.com/__filesource/fsource_sae__saemail.class.php.html#a116)
修改“添加附件”方法
public function attach($filename, $file_path)
$filename 为附件的文件名,如"pic.jpg" (文件支持类型见 http://apidoc.sinaapp.com/__filesource/fsource_sae__saemail.class.php.html#a291)
$file_path 为文件的URL, 如 "http://ww4.sinaimg.cn/thumbnail/6310d41cjw1e1g85nxi1lj.jpg"
添加"quick_send" 方法,方便快速发送邮件。此方法自动忽略其他参数。且仅支持发送content_type为TEXT)
public function quick_send($to, $subject, $msgbody, $smtp_user, $smtp_pass, $smtp_host='', $smtp_port=25, $smtp_tls=false)
更多使用参考 http://apidoc.sinaapp.com/__filesource/fsource_sae__saemail.class.php.html#a200
使用示例:
$this->load->library('email');
$config = array();
$config['smtp_host'] = 'smtp.sina.com';
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = 'test';
//$config['tls'] = TRUE; //Gmail需要加密连接,其他一般不需设置
$config['compress'] = 'my_pic'; //压缩所有附件为zip包,且命名为"my_pic.zip"
$this->email->initialize($config);
$this->email->from('[email protected]');
$this->email->to('[email protected]');
$this->email->subject('hello');
$this->email->message('你好');
$this->email->attach('pic1.jpg','http://example.com/pic1.jpg');
$this->email->attach('pic2.jpg','http://example.com/pic2.jpg');
$this->email->send();
//快速发送邮件,如果smtp邮箱为常见邮箱(sina,gmail,163,265,netease,qq,sohu,yahoo) 不需配置smtp_host等参数
$this->load->library('email');
$this->email->initialize();
$this->email->quick_send('[email protected]', '测试邮件', '测试', '[email protected]', 'test');
-----------------------------------------------------------
文件上传类
-----------------------------------------------------------
偏好设置中$config['upload_path'] 必须使用SAE中设定的storage名称(storage服务需开启和设置),
如已经有一个名为"public"的storage,则为:$config['upload_path'] = 'public',其他的设置不变。
可以支持文件夹,格式为:$config['upload_path'] = 'public/demo', "public"为storage名,"demo"为文件夹名。若只给出Storage名,则上传到根目录
上传成功后, $this->upload->data()新增"file_url"属性,为文件URL链接。
使用示例:
$config['upload_path'] = 'public/demo'; //上传文件保存位置
$config['allowed_types'] = 'gif|jpg|png'; //支持文件类型
$config['encrypt_name'] = true; //随机文件名
$this->load->library('upload', $config);
if (! $this->upload->do_upload()) {
print_r($this->upload->display_errors());
$data['error'] = array('error' => $this->upload->display_errors());
print_r($data['error']);
} else {
$data = $this->upload->data();
echo $data['file_url']; //上传文件成功后的URL路径
}
-----------------------------------------------------------
图像处理
-----------------------------------------------------------
待处理图片需放在Storage下,偏好设置注意:
1.$config['image_library'](自动强制使用'gd2')
2.$config['source_image'] = '/public/test/source.jpg'; 必须为 storage名/文件夹(可选)/文件名 格式
3.$config['new_image'] = '/public/test/new.png'; 必须为 storage名/文件夹(可选)/文件名 格式
4.$config['wm_overlay_path'] = '/public/test/wm.png'; 必须为 storage名/文件夹(可选)/文件名 格式
使用示例:
$config['source_image'] = '/public/test/source.jpg';
$config['new_image'] = '/public/test/new.jpg';
$config['maintain_ratio'] = TRUE;
$config['width'] = 250;
$config['height'] = 100;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
-----------------------------------------------------------
验证码类
-----------------------------------------------------------
使用原生SAE Vcode服务, 生成的验证码为大写字母和数字的结合, image大小80*20.
注意:
create_captcha()初始化不需提供参数, 返回一个数组, array('word'=>正确的验证码,'image'=>验证码图片URL);
使用示例:
$this->load->helper('captcha');
$cap = create_captcha();
echo $cap['word']; //验证码答案 (大写 数字)
echo $cap['image']; //验证码图片URL ( 80*20 )
-----------------------------------------------------------
日志类
-----------------------------------------------------------
替换CI日志类为原生SAE日志类,application\libraries\Log.php
使用示例:
log_message('error','your messages');
log_message('debug','your messages');
(需在配置文件中 手动打开log模式 $config['log_threshold'],默认为关闭)
查看方法:
SAE应用管理的日志中心, 选择"debug"中进行查看.
-----------------------------------------------------------
删除SAE不支持的类
-----------------------------------------------------------
zip类
迁移类
FTP类
-----------------------------------------------------------
如果有bug或交流
欢迎联系 [email protected]
如果你想拿去二次修改,希望保留原作者信息
本人新手 可能很多写得不太规范,十分乐意接受意见和建议~
谢谢