diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f9dfb6d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+.idea
+composer.lock
+*.log
+thinkphp
+/runtime
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..36f7b6f
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,42 @@
+sudo: false
+
+language: php
+
+branches:
+ only:
+ - stable
+
+cache:
+ directories:
+ - $HOME/.composer/cache
+
+before_install:
+ - composer self-update
+
+install:
+ - composer install --no-dev --no-interaction --ignore-platform-reqs
+ - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip .
+ - composer require --update-no-dev --no-interaction "topthink/think-image:^1.0"
+ - composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0"
+ - composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0"
+ - composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0"
+ - composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0"
+ - composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0"
+ - composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0"
+ - composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0"
+ - composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0"
+ - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip .
+
+script:
+ - php think unit
+
+deploy:
+ provider: releases
+ api_key:
+ secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw=
+ file:
+ - ThinkPHP_Core.zip
+ - ThinkPHP_Full.zip
+ skip_cleanup: true
+ on:
+ tags: true
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..2cb9a8a
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,32 @@
+
+ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
+版权所有Copyright © 2006-2017 by ThinkPHP (http://thinkphp.cn)
+All rights reserved。
+ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
+
+Apache Licence是著名的非盈利开源组织Apache采用的协议。
+该协议和BSD类似,鼓励代码共享和尊重原作者的著作权,
+允许代码修改,再作为开源或商业软件发布。需要满足
+的条件:
+1. 需要给代码的用户一份Apache Licence ;
+2. 如果你修改了代码,需要在被修改的文件中说明;
+3. 在延伸的代码中(修改和有源代码衍生的代码中)需要
+带有原来代码中的协议,商标,专利声明和其他原来作者规
+定需要包含的说明;
+4. 如果再发布的产品中包含一个Notice文件,则在Notice文
+件中需要带有本协议内容。你可以在Notice中增加自己的
+许可,但不可以表现为对Apache Licence构成更改。
+具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a964e91
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+ThinkPHP 5.0
+
diff --git a/application/.htaccess b/application/.htaccess
new file mode 100644
index 0000000..3418e55
--- /dev/null
+++ b/application/.htaccess
@@ -0,0 +1 @@
+deny from all
\ No newline at end of file
diff --git a/application/admin/controller/Order.php b/application/admin/controller/Order.php
new file mode 100644
index 0000000..46a000f
--- /dev/null
+++ b/application/admin/controller/Order.php
@@ -0,0 +1,104 @@
+good_id);
+ if ($order_status){
+ //mysql库存;
+ if (GoodModel::setDecQueryCounts()){
+ echo "抢购成功";
+ exit;
+ }
+ }
+ echo "抢购失败日记";
+ file_put_contents("error.txt", "$uid.\n", FILE_APPEND);
+ exit;
+ }
+
+ /**
+ * 增加redis 队列 和 随便设置商品数量
+ */
+ public function addRedisNumber(){
+
+ Redis::getConn()->lTrim(Redis::$good_total_field,1,0);
+ for ($i = 1;$i <= $this->goodTotal;$i++){
+ Redis::getConn()->lPush(Redis::$good_total_field,1);
+ }
+ db('Good')->where(['id'=>$this->good_id])->update(['counts'=>$this->goodTotal]);
+ print_r(Redis::getConn()->lLen(Redis::$good_total_field));
+
+ }
+
+ public function index()
+ {
+ return '
:)
ThinkPHP V5
十年磨一剑 - 为API开发设计的高性能框架
[ V5.0 版本由 七牛云 独家赞助发布 ] ';
+ }
+
+ /**
+ * swoole 客户端
+ * @return string
+ */
+ public function send(){
+ $client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
+ $ret = $client->connect("192.168.1.120", 9500);
+
+ if(empty($ret)){
+ echo 'error!connect to swoole_server failed';
+ } else {
+ //这里只是简单的实现了发送的内容
+ $send = $client->send('我是客户端,我发送了消息~__');
+ //等待服务端返回诗句
+ if ($send){
+ //recv返回客户端消息,应该等服务端返回数据才执行,否则会报错
+ $recv = $client->recv();
+ }else{
+ $recv = "服务端返回失败!";
+ }
+
+ return $send."--".$recv;
+ }
+ }
+}
diff --git a/application/admin/model/Good.php b/application/admin/model/Good.php
new file mode 100644
index 0000000..071e29d
--- /dev/null
+++ b/application/admin/model/Good.php
@@ -0,0 +1,38 @@
+(new Order())->good_id])->sum("counts");
+ if($good_count <= 0){
+ return 0;
+ }else{
+ return (int) $good_count;
+ }
+ }
+ /**
+ * 减去库存
+ */
+ static public function setDecQueryCounts(){
+ if(Good::where(['id'=>(new Order())->good_id])->setDec('counts') !==false){
+ return true;
+ }
+ return false;
+ }
+
+}
\ No newline at end of file
diff --git a/application/admin/model/Order.php b/application/admin/model/Order.php
new file mode 100644
index 0000000..8a12aad
--- /dev/null
+++ b/application/admin/model/Order.php
@@ -0,0 +1,70 @@
+ 0){
+ $order = $uid.time().mt_rand(1000,9999);
+ return (int) $order;
+ }
+ }
+ /**
+ * 写入订单
+ * @param $uid
+ * @param $order_id
+ */
+ static public function addOrder($uid ,$order_id ,$good_id){
+
+ $data['good_id'] = $good_id;
+ $data['order_id'] = $order_id;
+ $data['uid'] = $uid;
+ $data['add_time'] = time();
+ if(Order::insert($data) !==false){
+ //dump(self::getLastSql());
+ return self::getLastInsID();
+ }
+ return false;
+ }
+
+
+ /**
+ * 查询redis队列数量
+ */
+ static public function getGoodTotal(){
+ $good_count = (Redis::getConn())->lLen(Redis::$good_total_field);
+ if($good_count <= 0){
+ return 0;
+ }else{
+ return (int) $good_count;
+ }
+ }
+
+
+ /**
+ * 减去redis库存
+ * @param int $good_id
+ * @return bool
+ */
+ static public function setDecRedisLlen(){
+ if(Redis::getConn()->lPop(Redis::$good_total_field)!==false){
+ return true;
+ }
+ return false;
+ }
+
+
+}
\ No newline at end of file
diff --git a/application/admin/model/Redis.php b/application/admin/model/Redis.php
new file mode 100644
index 0000000..0a10dda
--- /dev/null
+++ b/application/admin/model/Redis.php
@@ -0,0 +1,34 @@
+connect($config['host'],$config['port']);
+
+ if(isset($config['password'])){
+ self::$_instance->auth($config['password']);
+ }
+ }
+
+ //获取静态实例
+ static public function getConn(){
+ if(!self::$_instance){
+ new self;
+ }
+ return self::$_instance;
+ }
+
+ /*
+ * 禁止clone
+ */
+ private function __clone(){}
+}
\ No newline at end of file
diff --git a/application/admin/model/User.php b/application/admin/model/User.php
new file mode 100644
index 0000000..bd232dc
--- /dev/null
+++ b/application/admin/model/User.php
@@ -0,0 +1,34 @@
+where(['uid'=>$uid])->find();
+ if($user_order_find){
+ return true;
+ }else{
+ return false;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/application/command.php b/application/command.php
new file mode 100644
index 0000000..826bb2b
--- /dev/null
+++ b/application/command.php
@@ -0,0 +1,12 @@
+
+// +----------------------------------------------------------------------
+
+return [];
diff --git a/application/common.php b/application/common.php
new file mode 100644
index 0000000..55d22f2
--- /dev/null
+++ b/application/common.php
@@ -0,0 +1,12 @@
+
+// +----------------------------------------------------------------------
+
+// 应用公共文件
diff --git a/application/config.php b/application/config.php
new file mode 100644
index 0000000..7dbcd79
--- /dev/null
+++ b/application/config.php
@@ -0,0 +1,246 @@
+
+// +----------------------------------------------------------------------
+
+return [
+ // +----------------------------------------------------------------------
+ // | 应用设置
+ // +----------------------------------------------------------------------
+
+ // 应用调试模式
+ 'app_debug' => true,
+ // 应用Trace
+ 'app_trace' => true,
+ // 应用模式状态
+ 'app_status' => '',
+ // 是否支持多模块
+ 'app_multi_module' => true,
+ // 入口自动绑定模块
+ 'auto_bind_module' => false,
+ // 注册的根命名空间
+ 'root_namespace' => [],
+ // 扩展函数文件
+ 'extra_file_list' => [THINK_PATH . 'helper' . EXT],
+ // 默认输出类型
+ 'default_return_type' => 'html',
+ // 默认AJAX 数据返回格式,可选json xml ...
+ 'default_ajax_return' => 'json',
+ // 默认JSONP格式返回的处理方法
+ 'default_jsonp_handler' => 'jsonpReturn',
+ // 默认JSONP处理方法
+ 'var_jsonp_handler' => 'callback',
+ // 默认时区
+ 'default_timezone' => 'PRC',
+ // 是否开启多语言
+ 'lang_switch_on' => false,
+ // 默认全局过滤方法 用逗号分隔多个
+ 'default_filter' => '',
+ // 默认语言
+ 'default_lang' => 'zh-cn',
+ // 应用类库后缀
+ 'class_suffix' => false,
+ // 控制器类后缀
+ 'controller_suffix' => false,
+
+ // +----------------------------------------------------------------------
+ // | 模块设置
+ // +----------------------------------------------------------------------
+
+ // 默认模块名
+ 'default_module' => 'index',
+ // 禁止访问模块
+ 'deny_module_list' => ['common'],
+ // 默认控制器名
+ 'default_controller' => 'Index',
+ // 默认操作名
+ 'default_action' => 'index',
+ // 默认验证器
+ 'default_validate' => '',
+ // 默认的空控制器名
+ 'empty_controller' => 'Error',
+ // 操作方法后缀
+ 'action_suffix' => '',
+ // 自动搜索控制器
+ 'controller_auto_search' => false,
+
+ // +----------------------------------------------------------------------
+ // | URL设置
+ // +----------------------------------------------------------------------
+
+ // PATHINFO变量名 用于兼容模式
+ 'var_pathinfo' => 's',
+ // 兼容PATH_INFO获取
+ 'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],
+ // pathinfo分隔符
+ 'pathinfo_depr' => '/',
+ // URL伪静态后缀
+ 'url_html_suffix' => 'html',
+ // URL普通方式参数 用于自动生成
+ 'url_common_param' => false,
+ // URL参数方式 0 按名称成对解析 1 按顺序解析
+ 'url_param_type' => 0,
+ // 是否开启路由
+ 'url_route_on' => true,
+ // 路由使用完整匹配
+ 'route_complete_match' => false,
+ // 路由配置文件(支持配置多个)
+ 'route_config_file' => ['route'],
+ // 是否强制使用路由
+ 'url_route_must' => false,
+ // 域名部署
+ 'url_domain_deploy' => false,
+ // 域名根,如thinkphp.cn
+ 'url_domain_root' => '',
+ // 是否自动转换URL中的控制器和操作名
+ 'url_convert' => true,
+ // 默认的访问控制器层
+ 'url_controller_layer' => 'controller',
+ // 表单请求类型伪装变量
+ 'var_method' => '_method',
+ // 表单ajax伪装变量
+ 'var_ajax' => '_ajax',
+ // 表单pjax伪装变量
+ 'var_pjax' => '_pjax',
+ // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则
+ 'request_cache' => false,
+ // 请求缓存有效期
+ 'request_cache_expire' => null,
+ // 全局请求缓存排除规则
+ 'request_cache_except' => [],
+
+ // +----------------------------------------------------------------------
+ // | 模板设置
+ // +----------------------------------------------------------------------
+
+ 'template' => [
+ // 模板引擎类型 支持 php think 支持扩展
+ 'type' => 'Think',
+ // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写
+ 'auto_rule' => 1,
+ // 模板路径
+ 'view_path' => '',
+ // 模板后缀
+ 'view_suffix' => 'html',
+ // 模板文件名分隔符
+ 'view_depr' => DS,
+ // 模板引擎普通标签开始标记
+ 'tpl_begin' => '{',
+ // 模板引擎普通标签结束标记
+ 'tpl_end' => '}',
+ // 标签库标签开始标记
+ 'taglib_begin' => '{',
+ // 标签库标签结束标记
+ 'taglib_end' => '}',
+ ],
+
+ // 视图输出字符串内容替换
+ 'view_replace_str' => [],
+ // 默认跳转页面对应的模板文件
+ 'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
+ 'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
+
+ // +----------------------------------------------------------------------
+ // | 异常及错误设置
+ // +----------------------------------------------------------------------
+
+ // 异常页面的模板文件
+ 'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',
+
+ // 错误显示信息,非调试模式有效
+ 'error_message' => '页面错误!请稍后再试~',
+ // 显示错误信息
+ 'show_error_msg' => false,
+ // 异常处理handle类 留空使用 \think\exception\Handle
+ 'exception_handle' => '',
+
+ // +----------------------------------------------------------------------
+ // | 日志设置
+ // +----------------------------------------------------------------------
+
+ 'log' => [
+ // 日志记录方式,内置 file socket 支持扩展
+ 'type' => 'File',
+ // 日志保存目录
+ 'path' => LOG_PATH,
+ // 日志记录级别
+ 'level' => [],
+ ],
+
+ // +----------------------------------------------------------------------
+ // | Trace设置 开启 app_trace 后 有效
+ // +----------------------------------------------------------------------
+ 'trace' => [
+ // 内置Html Console 支持扩展
+ 'type' => 'Html',
+ ],
+
+ // +----------------------------------------------------------------------
+ // | 缓存设置
+ // +----------------------------------------------------------------------
+
+ 'cache' => [
+ // 驱动方式
+ 'type' => 'File',
+ // 缓存保存目录
+ 'path' => CACHE_PATH,
+ // 缓存前缀
+ 'prefix' => '',
+ // 缓存有效期 0表示永久缓存
+ 'expire' => 0,
+ ],
+
+ // +----------------------------------------------------------------------
+ // | 会话设置
+ // +----------------------------------------------------------------------
+
+ 'session' => [
+ 'id' => '',
+ // SESSION_ID的提交变量,解决flash上传跨域
+ 'var_session_id' => '',
+ // SESSION 前缀
+ 'prefix' => 'think',
+ // 驱动方式 支持redis memcache memcached
+ 'type' => '',
+ // 是否自动开启 SESSION
+ 'auto_start' => true,
+ ],
+
+ // +----------------------------------------------------------------------
+ // | Cookie设置
+ // +----------------------------------------------------------------------
+ 'cookie' => [
+ // cookie 名称前缀
+ 'prefix' => '',
+ // cookie 保存时间
+ 'expire' => 0,
+ // cookie 保存路径
+ 'path' => '/',
+ // cookie 有效域名
+ 'domain' => '',
+ // cookie 启用安全传输
+ 'secure' => false,
+ // httponly设置
+ 'httponly' => '',
+ // 是否使用 setcookie
+ 'setcookie' => true,
+ ],
+
+ //分页配置
+ 'paginate' => [
+ 'type' => 'bootstrap',
+ 'var_page' => 'page',
+ 'list_rows' => 15,
+ ],
+ 'redis' => [
+ 'host' => '192.168.1.120',
+ 'port' => 6379,
+ 'password' => ''
+ ]
+];
diff --git a/application/database.php b/application/database.php
new file mode 100644
index 0000000..93e1e49
--- /dev/null
+++ b/application/database.php
@@ -0,0 +1,55 @@
+
+// +----------------------------------------------------------------------
+
+return [
+ // 数据库类型
+ 'type' => 'mysql',
+ // 服务器地址
+ 'hostname' => '192.168.1.120',
+ // 数据库名
+ 'database' => 'seckill',
+ // 用户名
+ 'username' => 'root',
+ // 密码
+ 'password' => 'root',
+ // 端口
+ 'hostport' => '3306',
+ // 连接dsn
+ 'dsn' => '',
+ // 数据库连接参数
+ 'params' => [],
+ // 数据库编码默认采用utf8
+ 'charset' => 'utf8',
+ // 数据库表前缀
+ 'prefix' => '',
+ // 数据库调试模式
+ 'debug' => true,
+ // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
+ 'deploy' => 0,
+ // 数据库读写是否分离 主从式有效
+ 'rw_separate' => false,
+ // 读写分离后 主服务器数量
+ 'master_num' => 1,
+ // 指定从服务器序号
+ 'slave_no' => '',
+ // 自动读取主库数据
+ 'read_master' => false,
+ // 是否严格检查字段是否存在
+ 'fields_strict' => true,
+ // 数据集返回类型
+ 'resultset_type' => 'array',
+ // 自动写入时间戳字段
+ 'auto_timestamp' => false,
+ // 时间字段取出后的默认时间格式
+ 'datetime_format' => 'Y-m-d H:i:s',
+ // 是否需要进行SQL性能分析
+ 'sql_explain' => false,
+];
diff --git a/application/extra/queue.php b/application/extra/queue.php
new file mode 100644
index 0000000..9223ef6
--- /dev/null
+++ b/application/extra/queue.php
@@ -0,0 +1,14 @@
+
+// +----------------------------------------------------------------------
+
+return [
+ 'connector' => 'Sync'
+];
diff --git a/application/redis.php b/application/redis.php
new file mode 100644
index 0000000..040f256
--- /dev/null
+++ b/application/redis.php
@@ -0,0 +1,12 @@
+ [
+ 'host' => '192.168.1.120',
+ 'port' => 6379,
+ 'password' => ''
+ ]
+];
\ No newline at end of file
diff --git a/application/route.php b/application/route.php
new file mode 100644
index 0000000..591e2c3
--- /dev/null
+++ b/application/route.php
@@ -0,0 +1,21 @@
+
+// +----------------------------------------------------------------------
+
+return [
+ '__pattern__' => [
+ 'name' => '\w+',
+ ],
+ '[hello]' => [
+ ':id' => ['index/hello', ['method' => 'get'], ['id' => '\d+']],
+ ':name' => ['index/hello', ['method' => 'post']],
+ ],
+
+];
diff --git a/application/tags.php b/application/tags.php
new file mode 100644
index 0000000..4b18d10
--- /dev/null
+++ b/application/tags.php
@@ -0,0 +1,28 @@
+
+// +----------------------------------------------------------------------
+
+// 应用行为扩展定义文件
+return [
+ // 应用初始化
+ 'app_init' => [],
+ // 应用开始
+ 'app_begin' => [],
+ // 模块初始化
+ 'module_init' => [],
+ // 操作开始执行
+ 'action_begin' => [],
+ // 视图内容过滤
+ 'view_filter' => [],
+ // 日志写入
+ 'log_write' => [],
+ // 应用结束
+ 'app_end' => [],
+];
diff --git a/build.php b/build.php
new file mode 100644
index 0000000..a12d26c
--- /dev/null
+++ b/build.php
@@ -0,0 +1,25 @@
+
+// +----------------------------------------------------------------------
+
+return [
+ // 生成应用公共文件
+ '__file__' => ['common.php', 'config.php', 'database.php'],
+
+ // 定义demo模块的自动生成 (按照实际定义的文件名生成)
+ 'demo' => [
+ '__file__' => ['common.php'],
+ '__dir__' => ['behavior', 'controller', 'model', 'view'],
+ 'controller' => ['Index', 'Test', 'UserType'],
+ 'model' => ['User', 'UserType'],
+ 'view' => ['index/index'],
+ ],
+ // 其他更多的模块定义
+];
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..ddfa491
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,40 @@
+{
+ "name": "topthink/think",
+ "description": "the new thinkphp framework",
+ "type": "project",
+ "keywords": [
+ "framework",
+ "thinkphp",
+ "ORM"
+ ],
+ "homepage": "http://thinkphp.cn/",
+ "license": "Apache-2.0",
+ "authors": [
+ {
+ "name": "liu21st",
+ "email": "liu21st@gmail.com"
+ }
+ ],
+ "require": {
+ "php": ">=5.4.0",
+ "topthink/framework": "5.0.*",
+ "topthink/think-image": "^1.0",
+ "topthink/think-captcha": "1.*",
+ "topthink/think-worker": "1.*",
+ "topthink/think-queue": "1.*",
+ "topthink/think-mongo": "1.*",
+ "topthink/think-oracle": "1.*",
+ "topthink/think-migration": "1.*"
+ },
+ "autoload": {
+ "psr-4": {
+ "app\\": "application"
+ }
+ },
+ "extra": {
+ "think-path": "thinkphp"
+ },
+ "config": {
+ "preferred-install": "dist"
+ }
+}
diff --git a/extend/.gitignore b/extend/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/extend/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..ef54628
--- /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+ttt
\ No newline at end of file
diff --git a/public/.htaccess b/public/.htaccess
new file mode 100644
index 0000000..cbc7868
--- /dev/null
+++ b/public/.htaccess
@@ -0,0 +1,8 @@
+
+ Options +FollowSymlinks -Multiviews
+ RewriteEngine On
+
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
+
diff --git a/public/1111111.txt b/public/1111111.txt
new file mode 100644
index 0000000..e69de29
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..e71815a
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/index.php b/public/index.php
new file mode 100644
index 0000000..6b7ec30
--- /dev/null
+++ b/public/index.php
@@ -0,0 +1,17 @@
+
+// +----------------------------------------------------------------------
+
+// [ 应用入口文件 ]
+
+// 定义应用目录
+define('APP_PATH', __DIR__ . '/../application/');
+// 加载框架引导文件
+require __DIR__ . '/../thinkphp/start.php';
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..eb05362
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow:
diff --git a/public/router.php b/public/router.php
new file mode 100644
index 0000000..1b648c4
--- /dev/null
+++ b/public/router.php
@@ -0,0 +1,20 @@
+
+// +----------------------------------------------------------------------
+// $Id$
+
+if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) {
+ return false;
+} else {
+ if (!isset($_SERVER['PATH_INFO'])) {
+ $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
+ }
+ require __DIR__ . "/index.php";
+}
diff --git a/public/static/.gitignore b/public/static/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/public/static/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/server/tcp_server.php b/server/tcp_server.php
new file mode 100644
index 0000000..b123f34
--- /dev/null
+++ b/server/tcp_server.php
@@ -0,0 +1,27 @@
+on('connect', function ($serv, $fd) {
+ echo "Client: Connect.\n";
+});
+
+//监听数据接收事件
+$serv->on('receive', function ($serv, $fd, $from_id, $data) {
+ echo $data . $fd;
+ $serv->send($fd, "Server: ".$data);
+});
+
+//监听连接关闭事件
+$serv->on('close', function ($serv, $fd) {
+ echo "Client: Close.\n";
+});
+
+//启动服务器
+$serv->start();
+
+?>
\ No newline at end of file
diff --git a/think b/think
new file mode 100644
index 0000000..4e2688f
--- /dev/null
+++ b/think
@@ -0,0 +1,17 @@
+#!/usr/bin/env php
+
+// +----------------------------------------------------------------------
+
+// 定义项目路径
+define('APP_PATH', __DIR__ . '/application/');
+
+// 加载框架引导文件
+require __DIR__.'/thinkphp/console.php';
diff --git a/vendor/.gitignore b/vendor/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/vendor/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file