一、创建:
php artisan make:command sync#创建脚本
php artisan command:sync #执行脚本
php artisan command:方法 参数【--参数名=参数值】
php artisan command:sync file #执行带参数的脚本
php artisan command:sync --file #执行带参数的脚本
ctrl + C #撤销执行
二、修改kernel.php,引入创建
image.png
三、修改sync.php
主要代码:
protected $signature = 'command:sync {param?} {--func=}';
//command:name 改成文件名
//{param?} 可选参数,不用指定参数名
//{--func=} --func=参数名 ,指定参数名
public function handle(){
//默认调用此方法
}
demo示例:
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
set_time_limit(0); //解除PHP脚本时间30s限制
ini_set('memory_limit','128M');//修改内存值
class sync extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'command:sync {param?} {--func=}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description: 调用示例,联系人同步:
php artisan command:sync contacts or php artisan command:sync --func=contacts ';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
// 入口方法
$param = $this->argument('param'); // argument不指定参数名的情况下用 file
$func = $this->option('func'); // option用--开头指定参数名 --func=file
$method = isset($param) ? $param : $func;//兼容两种传参方式调用
//本类中是否存在传来的方法
if(!method_exists(new self,$method)){
echo '不存在的方法,请确认输入是否有误!';
}else{
self::$method();
}
}
//同步
public static function index(){
$s = 0;//从0开始
$e = 10; //取10条数据
while(true){//死循环模拟分页执行代码
if($s >=100){//满足条件跳出死循环
exit('success');
}
//执行代码
file_put_contents('./test.log',$s.'--'.$e."\n",FILE_APPEND);
$s = $s+$e; //下次分页开始
}
}
//文件同步
public static function file(){
echo"文件同步";
}
//会员同步
public static function file(){
echo"会员同步";
}
//联系人同步
public static function contacts(){
echo "联系人同步";
}
}
index执行结果:php artisan command:sync index (php artisan command:sync --func=index)
image.png
image.png
网友评论