Laravel 服务容器 绑定接口到实现

31. May 2018 Laravel 0
1.在项目根目录app下创建Contract和Services文件,然后编写自己的接口文件(ProductInterface.php)和接口实现文件(ProductService.php) 如接口文件 <?php namespace AppContract; interface ProductInterface { public function lists(); public function show(int $service_id); } 接口实现文件 <?php namespace AppServices; use AppContractProductInterface; class ProductService implements ProductInterface { /* * 产品列表数据service */ public function lists() { //code here } /* * 产品列表详情service */ public function show(int $service_id) { //code here } } 2.在服务容器中注册 可在app/Providers下AppServiceProvider里register中注册 $this->app->bind(\'AppContractProductInterface\', \'AppServicesProductService\'); ...

Laravel 伪造跨站请求保护csrf 在vue中使用

31. May 2018 Laravel 0
项目使用前后分离模式,vue+laravel,使用form表单提交很简单,不使用默认bootstrap.js或独立vue项目需要配置下。 在vue的入口文件,blade模板里添加 <meta name=\"csrf-token\" content=\"{{ csrf_token() }}\"> 然后在axios request拦截器中添加 let token = document.head.querySelector(\'meta[name=\"csrf-token\"]\'); if (token) { axios.defaults.headers.common[\'X-CSRF-TOKEN\'] =token.content; } PS:若独立vue项目,入口使用默认html文件,注释掉第一步加入的meta那行,{{ csrf_token() }}在php文件中才能被正确执行。  

supervisord常用笔记

30. May 2018 Linux 0
在laravel项目中使用supervisord管理守护laravel队列进程,修改队列任务后经常需要重启来生效配置 1.更新新的配置 supervisorctl update 2.重启配置中所有进程 supervisorctl reload 3.启动配置中指定的进程 supervisorctl start laravel-worker:* //填写自己配置的进程名称 4.查看守护中的进程 supervisorctl 5.停止配置中的进程 supervisorctl stop laravel-worker:* //填写自己配置的进程名称 6.重启指定进程 supervisorctl restart laravel-worker:* //填写自己配置的进程名称 7.停止全部进行 supervisorctl stop all

服务器文件定时备份笔记

28. May 2018 Linux 0
crontab -e 10 23 1 * * tar -zcvPf /home/lijian/Desktop/lijian.$(date +%Y%m%d).tar.gz /home/lijian/Desktop/lijian 每月1号23点10分开始备份文件 脚本正常执行的前提,crond服务启动,执行下: service crond restart 在Desktop中生成lijian.20180706.tar.gz

sqlite3安装,重新编译python

23. May 2018 Python 0
基本上大多数linux系统都预先安装sqlite3,不过也有未安装的,比如我使用的那个服务器就没安装,只能手动安装然后再重新编译下python了 wget http://www.sqlite.org/snapshot/sqlite-snapshot-201805181758.tar.gz tar -zxvf sqlite-snapshot-201805181758.tar.gz cd sqlite-snapshot-201805181758 .configure --prefix=/usr/local make && make install sqlite3安装成功后,在控制台输入sqlite3 可进入,测试是否成功。 python需要重装或重新编译,若重新编译,则查看python软件包下setup.py文件 查找到sqlite_inc_paths,查看是否包含你指定或默认安装sqlite3的路径,上面把sqlite3 安装到了/usr/local中,则在sqlite_inc_paths添加 /usr/local/sqlite3/include 然后在python包根目录执行 .configure make && make install 完成后,在控制台测试是否可导入成功: python >>import sqlite3 然后就可以使用了 import sqlite3 conn = sqlite3.connect(\'file.db\', check_same_thread=False) c = conn.cursor() def insert(url): hasfile = c.execute(\"select * from file where url=\'{fileUrl}\'\".format(fileUrl=url)) if hasfile.fetchone(): pass else: c.execute(\"insert ...

flask,uwsgi,nginx安装调试步骤

23. May 2018 Python 0
刚开始学flask时,跑在服务器上,各种问题,记录下排除故障的步骤,一步步来,可快速发现问题 一:安装好flask后,导入包后,main.py文件如下: from flask import Flask from flask import render_template from flask import request from flask_cors import * //允许跨域请求的包 app=Flask(__name__) CORS(app,supports_credentials=True) @app.route(\'/\') def index(): return render_template(\'file.html\') //在templates文件下建file.html文件,填写一下内容 if __name__ == \'__main__\': app.run() 然后在项目文件夹下运行: python main.py //main.py 为我创建的文件,内容如上。若有错误,在控制台就能看到,排除掉代码问题 二:uwsgi安装配置 ①安装好uwsgi后,先在控制台使用uwsgi跑flask uwsgi --http :9090 --wsgi-file main.py //若有错误,亦可在控制台发现,若无错误,可使用浏览器访问下http://127.0.0.1:9090,错误也可能在访问过程中产生。 若服务器无桌面环境,在控制台执行 curl http://127.0.0.1:9090,若执行成功,则返回file.html中的内容。 ②接下来将uwsgi放在web服务器nginx后,使用uwsgi协议,众多配置项放到一个文件中 在etc下创建了uwsgi.ini文件,内容如下: [uwsgi] socket = 127.0.0.1:9090 chdir ...

uwsgi 服务器停止,重启

23. May 2018 Python 0
停止uwsgi服务器 方式1: ps -aux|grep uwsgi //获取uwsgi进程ID kill -HUP pid //pid即获得的进程ID 方式2:知道uwsgi自定义配置的pid文件的位置 cat /tmp/uwsgi.pid kill -HUP pid //pid即获得的进程ID 方式3:把方式2合并到一起 kill -HUP `cat /tmp/uwsgi.pid` //注意命令中是反引号,并非单引号。 启动uwsgi服务器 uwsgi /etc/uwsgi.ini //第二项为uwsgi初始化文件 uwsgi.ini 初始化文件内容 [uwsgi] socket = 127.0.0.1:9090 chdir = /var/www/project/metadata/ wsgi-file=main.py threads = 4 reload-mercy = 10 vacuum = true max-requests = 1000 limit-as = 512 buffer-size = 30000 ...

Vue 初始化使用笔记

23. May 2018 HTML5 0
做为一个后端开发,搞点前端也是必不可少的,最实用的就是平时写点东西展示出来,工作中调试接口,省去前后端交互的很多事,我会告诉前端接口我已经测试过了,接口问题和我无关哦。 1.vue安装使用,初始化项目绝对要使用vue-cli,不然太难搞 npm install --global vue npm install --global vue-cli vue init webpack my-project 接下来根据自己需求安装,可以的话,全选yes,依赖自动安装,完成后可以使用 npm run dev 查看项目,初始化介绍。 2.添加 axios npm install axios 在main.js中添加刚安装的axios import axios from \'axios\' import qs from \'qs\' import VueAxios from \'vue-axios\' axios.defaults.headers.post[\'Content-Type\'] = \'application/x-www-form-urlencoded\' axios.defaults.timeout = 5000 Vue.use(VueAxios, axios) 添加请求拦截器,格式化提交数据,否则数据提交失败。 axios.interceptors.request.use((config) => { if (config.method === \'post\') { config.data ...

Mysql 排序orderBy if 使用方法及排序规则

22. May 2018 DataBase 0
开发中遇到的排序问题中,有字段为0或null,需要后置处理,网上部分博客感觉有点问题,多次实践,总结如下: 使用的字段id,自增,usnews_n_sort参照,rank进行排序,有0和null   排序过程中判断rank是否为0或为null,若是,则在rank上添加隐藏字段,为“1”添加在查询结果尾部,为“0”添加在查询结果首部 情景一:不使用 if 排序 SELECT id,usnews_n_sort,rank from test ORDER BY rank ASC 使用rank 升序,null 在0之前。   情景二:使用 if  后置 升序 SELECT id,usnews_n_sort,rank from test ORDER BY IF(rank=0 || ISNULL(rank),1,0), rank ASC 把为0或为null的情况后置,然后进行升序处理   情景三:使用if 后置 降序 SELECT id,usnews_n_sort,rank from test ORDER BY IF(rank=0 || ISNULL(rank),1,0), rank DESC 把为0或为null的情况后置,然后进行降序处理   情景四:使用if 前置 升序 ...

Laravel 控制器中try catch 排除状态码422,即validate 验证失败

09. May 2018 Laravel 0
1.控制器中使用try catch,catch默认获取所有异常,但validate返回的422验证失败我们需要单独处理,不需要异常跑出, 可以这么来: use IlluminateValidationValidationException; catch (Exception $e) { throw_if($e instanceof ValidationException, $e); return InfoController::errorInfo(618); }