阿里云新用户优惠

Laravel composer导入本地包

老项目使用的是laravel5.1,需要升级到laravel8,php也需要同步升级。 原先项目的使用的phpoffice已停止更新且有些特性PHP8不支持,无法直接使用,若使用其他项目包改动比较大。 故需要将此包导入成本地包,然后直接修改不兼容代码。 项目根目录创建文件夹packages,用来放需要本地化的项目代码,例如本次项目路径为:packages/phpoffice/phpexcel 修改根目录下的composer.json配置 "repositories": [ { "type": "path", "url": "packages/phpoffice/phpexcel" } ] 执行composer命令 composer require phpoffice/phpexcel:*@dev

阅读更多...

阿里云新用户优惠

laravel临时关闭created_at、updated_at的自动更新

laravel临时关闭created_at、updated_at的自动更新。 直接上代码 $user = new User([ 'id' => 1, 'name' => 'xiyoudaodao', 'password' => Hash::make('admin'), 'login' => 'admin' ]); $user->timestamps = false; $nowTimeUnix = time(); $user->created_at = date("Y-m-d H:i:s", $nowTimeUnix + 10); $user->updated_at = date("Y-m-d H:i:s", $nowTimeUnix + 10); $user->save();

阅读更多...

阿里云新用户优惠

Laravel图片处理包intervention-image的使用

最近偶然发现了Laravel可用的图片处理包intervention-image。 文档地址:http://image.intervention.io 安装起来也很简单。 composer require intervention/image 然后到config/app.php的 $providers中添加 Intervention\Image\ImageServiceProvider::class $aliases中添加 'Image' => Intervention\Image\Facades\Image::class 使用时引入Image的命名空间 use Intervention\Image\Facades\Image; 这样就可以使用Image来方便的处理图片了。 基本操作: $img = Image::make('public/foo.jpg')->resize(300, 200); $img->save('public/bar.png'); save()也可以不填写路径,不填默认为覆盖原图。 intervention通常会在PHP脚本完成后会自动销毁资源。 也可以使用destroy()方法主动销毁资源,在调用方法后,图像实例不再可用。 $img = Image::make('public/foo.jpg'); $img->resize(320, 240); $img->save('public/small.jpg'); $img->destroy(); 此处有一坑,save()覆盖原图时,destroy()不能正常销毁。save()为不同文件,可正常使用destroy()。

阅读更多...

阿里云新用户优惠

PM2启动LaravelS运行swoole命令

之前的文章已经写过PM2启动laravel队列的命令。传送门 这里再写加一个启动laravel的swoole扩展的命令, 先cd到laravel项目中,然后执行以下命令: pm2 start bin/laravels --name laravels --interpreter php -- restart ps:不能加参数 – -daemon, 加了启动不了。

阅读更多...

阿里云新用户优惠

laravel-admin关联模型的小坑

laravel-admin写起来确实很方便。 在$grid 可以使用 关联模型获取关联表的数据,可设置为可修改。 比如: public function profile() { return $this->hasOne(Profile::class); } $grid->profile()->gender()->editable('select', [1 => '男', 2 => '女']); 在$from中也可以 使用这个关联的模型来 保存数据 比如: $form->select('profile.gender', '性别')->options([1 => '男', 2 => '女']); 此时数据可以正常的创建和修改。 重点来了,此处需要注意一个坑。 在命名关联模型时不可使用驼峰写法,必须全部小写,否则,$grid显示正常,就是修改时$from保存不了数据。

阅读更多...

阿里云新用户优惠

Laravel开发通过Model的$attributes设置字段默认值

使用Laravel开发时,数据库非空字段未设置默认值,可以在此表Model中添加 $attributes为字段设置默认值,通过save方法保存时会自动添加。 例如,为文章表 访问数 字段 access_nums 添加 默认值0,则新建文章时会默认access_nums为0。 protected $attributes = [ 'access_nums' => 0 ];

阅读更多...

阿里云新用户优惠

CentOS 7 cron定时重启php-fpm

服务器使用nginx+php-fpm配置。 最近发现php-fpm总是不释放内存,服务器内存1G,本身就小,过一段时间就占满了。 只好在占满前手动restart。 然后搜索了一下,发现php-fpm确实存在不释放内存的情况。 按照介绍重新设置了 pm.start_servers:动态方式下的起始php-fpm进程数量 7 pm.min_spare_servers:动态方式下的最小php-fpm进程数 4 pm.max_spare_servers:动态方式下的最大php-fpm进程数量 10 最终命令: pm.start_servers = min_spare_servers + (max_spare_servers - min_spare_servers) / 2 试用了一段时间,内存确实到90%左右就不增长缓慢了,但是数据堵塞了,只好继续restart。 在找到替换php-fpm之前,省事的方法还先设置一个定时任务,每天凌晨重启一下php-fpm访问。 先到win10自带的ubuntu上测试一番 第一个命令 service cron start : 提示no crontab for root – using an empty one 选择编辑器后 填写 * * * * * service nginx restart 每分钟重启一次nginx 默默等待一分钟,打开top,什么都没有发生,找日志,结果日志也没有。 搜索一番,始终找不到日志,顿时没了头绪。 换一个命令,再试一次。 * * * * * date >> /var/log/temp.txt 再次默默等待一分钟,切到var的log目录,居然出现了temp.txt。 再次搜索 定时启动php-fpm的命令。 最终命令:每天凌晨1点重启php-fpm服务 0 1 * * * systemctl restart php-fpm

阅读更多...

阿里云新用户优惠

PM2启动Laravel队列运行PHP命令

最近要用到Laravel的队列,官方文档推荐了Supervisor,进程守护程序平时用的比较少,看到文档上的操作过程有点懵。 同事推荐了PM2,PM2是Node.js提供的进程守护工具。 先安装nodejs,然后执行npm install pm2 -g,安装完毕。 这个…确实安装简单,对新手用户友好。 代码也准备好了,万事必备,准备开撸。 文档上的命令都是关于js的,依葫芦画瓢运行了几个命令都报错了。 一番查找,才找到了PM2启动laravel队列命令 最终命令: pm2 start artisan --name laravel-worker --interpreter php -- queue:work --daemon

阅读更多...