头像

Windows环境中laravel任务调度 如何启动调度

这里贴出链接,可以自己参考
http://stackoverflow.com/questions/36305146/how-to-run-task-scheduler-in-windows-10-with-laravel

1:首先在桌面上,新建一个bat批处理文件,然后在文件中输入以下两句话,保存
这里写图片描述

2:输入win+R 然后输入 taskschd.msc 进入定时任务设置界面

3:点击创建基本任务
这里写图片描述
4:输入名称,点击下一步
这里写图片描述

5:点击计算机启动时,点击下一步
这里写图片描述

6:点击启动程序,下一步
这里写图片描述

7:添加刚刚新建的,bat文件,下一步
这里写图片描述

8:勾选上,打开属性列表,完成
这里写图片描述

9:点击图中的选项设置
这里写图片描述
这里写图片描述

10:确定之后,等一分钟,你的laravel程序就会被调用

11:不想用了,直接关掉这个定时任务即可
这里写图片描述

 

转自博客园:http://blog.csdn.net/hwwhhw/article/details/53765408

头像

Laravel5异步队列使用方法

Laravel5提供了完善的队列功能,只需要简单的配置即可使用。这里简单记录下关于异步队列的用法。

配置

关于队列的定义,这里就不作介绍了。我们要使用异步队列就有两个关键:

1.存储队列的地方
2.执行任务的服务

打开 config/queue.php ,这是Laravel5关于队列的配置文件。首先我们可以通过 default 参数指定默认队列驱动,默认配置是 sync , 这是同步队列,我们要做异步队列首先就要改变这里。假设我们用 database 作为驱动,队列任务将会存放在数据库中,而我们后面会另外启动一个后台服务来处理队列任务,这就是异步方式了。

'default' => 'database'

修改完配置后,我们需要创建一个表来存放队列任务,Laravel5已经在自带artisan命令中内置了一个指令用来生成数据迁移,只需要两条命令即可,当然你得实现配置好数据库连接。

php artisan queue:table
php artisan migrate

这样就自动在数据库中创建了 jobs 表。

启动队列监听服务

通过下面这条指令启动队列监听服务,它会自动处理 jobs 表中的队列任务:

php artisan queue:listen

在linux中,如果想让它在后台执行,可以这样:

nohup php artisan queue:listen &

添加队列任务

关于队列任务的添加,手册里说的比较详细,这里就简单举个例子吧。

首先,通过artisan创建一个队列命令:

php artisan make:command SendEmail --queued         (--queued 参数是异步队列不可少的,告诉Laravel该任务应该被推送到队列而不是同步运行。)

这样会生成 app/Commands/SendEmail.php 这个类文件,这个类会被标识为队列命令,你可以在 handle 方法中写自己的业务逻辑。

在控制器中,可以简单通过 Bus::dispatch 分发任务:

Bus::dispatch(new \App\Commands\SendEmail());

你会发现任务不会立即执行,而是被放到 jobs 表中,由队列监听服务处理。

更多详细使用说明可以参考官方使用文档。

头像

关于Laravel的使用【备忘】

Laravel对服务器环境的要求

  • PHP >= 5.5
  • MCrypt PHP 扩展
  • OpenSSL扩展
  • PDO扩展
  • Mbstring扩展
  • Tokenizer扩展

目录权限

安装完Laravel后,需要配置一些权限。storagebootstrap/cache目录应该是可写的,如果你在使用 Homestead 虚拟机,这些权限已经被设置好了。

如果laravel部署好,一直显示空白,报500错误!那么需要注意以上条件是否满足。

例如,我就有一次出现错误,最终发现是PHP版本没指定对。为什么呢?因为我对服务器安装了多PHP版本支持,新部署的项目 nginx 配置中忘计更改PHP版本了(默认使用5.4)。

修改nginx配置:fastcgi_pass unix:/dev/shm/php70-cgi.sock;

这里改成7.0版本,改过来再重启nginx 就好了。

使用Redis

安装 predis扩展:”predis/predis”: “1.0.*”。

具体使用方法可参考 laravel redis 文档。

如果PHP也安装了redis扩展,那么在使用的过程中会有冲突。我的解决办法是将 use Redis;改为use Illuminate\Support\Facades\Redis;(使用laravel中的predis扩展)。

使用chumper/zipper

安装zipper扩展:”chumper/zipper”: “1.0.x”。

参考地址:https://github.com/Chumper/Zipper

目前在php7.0会压缩失败,目前使用php5.6能正常使用。

偶尔的500错误不能正常输出信息或日志

由于做了定时任务执行的用户是root,而PHP写日志文件用户是 www.导致不可写引起程序报500错。

请删除日志文件 /storage/logs/laravel.log。 或 参考以下地址:http://www.june-fj.com/?p=360 修改定时任务执行的用户

提醒自己:有问题就看PHP日志!有问题就看PHP日志!有问题就看PHP日志! 重要的事情!!!

PHP日志在php.ini 中配置 error_log=/tmp/php_errors.log

头像

Laravel 任务调度

一 、创建Command文件

php artisan make:console DataSync

创建app/Console/Commands 下创建RefreshToken.php

取一个名字

protected $signature = 'datasync';

添加描述

protected $description = 'sync data';

 在 handle() 方法中实现功能

public function handle()
{
    Log::info('同步数据');
}

二、在Kernel.php 文件中注册

//Commands\Inspire::class,
         Commands\DataSync::class,
    ];
protected function schedule(Schedule $schedule)
    {
         $schedule->command('datasync') ->everyMinute(); 
    }

 

三、新建cron.txt文件

文件内容:

* * * * * /usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1

不需要重启cron服务,因为系统每分钟都会读一遍/var/spool/cron目录下的文件。

如果发现按照如下配置还是不能执行的话,可以用以下方法排除问题:

看一下命令有没有使用绝对路径,比如这里使用/usr/local/php/bin/php而不是php,使用/data/wwwroot/test/artisan而不是artisan。

要注意前面的PHP部分对应你使用的PHP版本目录。

默认是root用户执行,会存在写入日志冲突情况,可参考 crontab指定用户执行

四、用命令开启任务

在终端中项目目录下(Linux 环境)
告诉crontab 文件名:

crontab cron.txt

开始定时任务

crontab -l

或许之后你要结束任务

crontab -r
头像

laravel 使用自定义 函数/类

自定义函数:

1. 创建文件 app/helpers.php

<?php

// 示例函数
function foo() {
return “foo”;
}

2. 修改项目 composer.json

在项目 composer.json 中 autoload 部分里的 files 字段加入该文件即可:

{

“autoload”: {
“files”: [
“app/helpers.php”
]
}

}

然后运行:

composer dump-autoload

 

自定义类:
在composer.json的autoload内的classmap项新增类包,

“autoload”: {
“classmap”: [
“database”,
“app/libraries/stmp.php”

],
“psr-4″: {
“App\\”: “app/”
}
},

完成之后还需要

composer dump-autoload

头像

Nginx环境运行Laravel的配置

修改文件:nginx.conf

修改前记得备份,万一改错了还能还原回去。

server {  
        listen  80;    
        server_name localhost;    
        set $root_path '/usr/local/app/wxsys/public';    
        root $root_path;    
        
        index index.php index.html index.htm;    
        
        try_files $uri $uri/ @rewrite;    
        
        location @rewrite {    
            rewrite ^/(.*)$ /index.php?_url=/$1;    
        }    
        
        location ~ \.php {    
        
            fastcgi_pass 127.0.0.1:9000;    
            fastcgi_index /index.php;    
        
            fastcgi_split_path_info       ^(.+\.php)(/.+)$;    
            fastcgi_param PATH_INFO       $fastcgi_path_info;    
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;    
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    
            include                       fastcgi_params;  
        }    
        
        location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {    
            root $root_path;    
        }    
        
        location ~ /\.ht {    
            deny all;    
        }    
    }
头像

laravel5.2使用entrust出现错误:This cache store does not support tagging

laravel5.2使用entrust出现错误:This cache store does not support tagging

entrust:”zizaco/entrust”: “5.2.x-dev”

原因:

This is not a bug, file and database drivers do not support tags as documented in the official Laravel documentation. See https://laravel.com/docs/5.2/cache#cache-tags

文件和数据库驱动不支持标记。

解决办法:

修改.env文件:CACHE_DRIVER=array