{"id":863,"date":"2025-06-12T01:26:30","date_gmt":"2025-06-11T17:26:30","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/863.html"},"modified":"2025-06-12T01:26:30","modified_gmt":"2025-06-11T17:26:30","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8-laravel-%e4%b8%ad%e8%bf%90%e8%a1%8c%e5%90%8e%e5%8f%b0%e5%92%8c%e5%af%86%e9%9b%86%e5%9e%8b%e4%bb%bb%e5%8a%a1%ef%bc%9a%e8%af%a6%e5%b0%bd%e6%8c%87%e5%8d%97","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/863.html","title":{"rendered":"\u5982\u4f55\u5728 Laravel \u4e2d\u8fd0\u884c\u540e\u53f0\u548c\u5bc6\u96c6\u578b\u4efb\u52a1\uff1a\u8be6\u5c3d\u6307\u5357"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#36816;&#34892;&#21518;&#21488;&#21644;&#23494;&#38598;&#22411;&#20219;&#21153;&#26159;&#19968;&#20010;&#24120;&#35265;&#30340;&#38656;&#27714;&#65292;&#23588;&#20854;&#26159;&#22312;&#22788;&#29702;&#22823;&#37327;&#25968;&#25454;&#12289;&#38271;&#26102;&#38388;&#36816;&#34892;&#30340;&#33050;&#26412;&#25110;&#32773;&#38656;&#35201;&#23450;&#26399;&#25191;&#34892;&#30340;&#20219;&#21153;&#26102;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#35814;&#32454;&#30340;&#25351;&#21335;&#65292;&#24110;&#21161;&#20320;&#22312; Laravel &#20013;&#23454;&#29616;&#36825;&#19968;&#30446;&#26631;&#12290;<\/p>\n<h3>1. &#23433;&#35013; Laravel &#20219;&#21153;&#35843;&#24230;&#22120;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#30340; Laravel &#39033;&#30446;&#24050;&#32463;&#23433;&#35013;&#20102;&#20219;&#21153;&#35843;&#24230;&#22120;&#12290;&#22914;&#26524;&#27809;&#26377;&#23433;&#35013;&#65292;&#21487;&#20197;&#36890;&#36807; Composer &#36827;&#34892;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/framework<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#26469;&#23433;&#35013;&#20219;&#21153;&#35843;&#24230;&#22120;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan make:command SendEmails --command=SendEmails@default<\/code><\/pre>\n<p>&#36825;&#20010;&#21629;&#20196;&#20250;&#29983;&#25104;&#19968;&#20010; <code>SendEmails<\/code> &#21629;&#20196;&#31867;&#65292;&#24182;&#23558;&#20854;&#28155;&#21152;&#21040; <code>app\/Console\/Commands<\/code> &#30446;&#24405;&#19979;&#12290;<\/p>\n<h3>2. &#32534;&#36753;&#20219;&#21153;&#31867;<\/h3>\n<p>&#25171;&#24320;&#29983;&#25104;&#30340; <code>SendEmails<\/code> &#31867;&#25991;&#20214;&#65288;&#20363;&#22914; <code>app\/Console\/Commands\/SendEmails.php<\/code>&#65289;&#65292;&#24182;&#32534;&#20889;&#20320;&#30340;&#20219;&#21153;&#36923;&#36753;&#12290;&#20363;&#22914;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppConsoleCommands;\n\nuse IlluminateConsoleCommand;\nuse Mail;\n\nclass SendEmails extends Command\n{\n    protected $signature = 'send-emails {--count}';\n\n    protected $description = 'Sends emails to a list of recipients';\n\n    public function handle()\n    {\n        $count = (int)$this-&gt;option('count') ?? 50;\n\n        for ($i = 0; $i &lt; $count; $i++) {\n            Mail::to('recipient@example.com')-&gt;send(new AppMailEmail($i));\n        }\n\n        $this-&gt;info(\"Sent {$count} emails successfully.\");\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#20351;&#29992;&#20102; Laravel &#30340;&#37038;&#20214;&#21151;&#33021;&#26469;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#12290;&#20320;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#20462;&#25913;&#37038;&#20214;&#30340;&#20869;&#23481;&#21644;&#25509;&#25910;&#32773;&#21015;&#34920;&#12290;<\/p>\n<h3>3. &#27880;&#20876;&#20219;&#21153;<\/h3>\n<p>&#22312; <code>app\/Console\/Kernel.php<\/code> &#25991;&#20214;&#20013;&#27880;&#20876;&#20320;&#30340;&#20219;&#21153;&#12290;&#20320;&#38656;&#35201;&#23558;&#20219;&#21153;&#28155;&#21152;&#21040; <code>schedule<\/code> &#26041;&#27861;&#20013;&#65306;<\/p>\n<pre><code class=\"language-php\">protected function schedule(Schedule $schedule)\n{\n    $schedule-&gt;command('send-emails')-&gt;everyMinute()-&gt;withoutOverlapping();\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#27599;&#20998;&#38047;&#36816;&#34892;&#19968;&#27425; <code>SendEmails<\/code> &#20219;&#21153;&#65292;&#24182;&#19988;&#19981;&#20250;&#21516;&#26102;&#36816;&#34892;&#22810;&#20010;&#23454;&#20363;&#12290;<\/p>\n<h3>4. &#36816;&#34892;&#20219;&#21153;<\/h3>\n<p>&#35201;&#36816;&#34892;&#20219;&#21153;&#65292;&#21487;&#20197;&#20351;&#29992;&#20197;&#19979;&#21629;&#20196;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan schedule:run<\/code><\/pre>\n<p>&#22914;&#26524;&#20320;&#24076;&#26395;&#20219;&#21153;&#22312;&#26381;&#21153;&#22120;&#21551;&#21160;&#26102;&#33258;&#21160;&#36816;&#34892;&#65292;&#21487;&#20197;&#22312; <code>app\/Console\/Kernel.php<\/code> &#25991;&#20214;&#20013;&#35774;&#32622; <code>bootstrap<\/code> &#26041;&#27861;&#20013;&#30340; <code>schedule<\/code> &#37197;&#32622;&#65306;<\/p>\n<pre><code class=\"language-php\">protected function bootstrap()\n{\n    parent::bootstrap();\n\n    $this-&gt;commands([\n        \/\/ &#20854;&#20182;&#21629;&#20196;...\n    ]);\n\n    Schedule::runNowThroughOutTheDay(function () {\n        $this-&gt;call('send-emails');\n    });\n}<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#20219;&#21153;&#20250;&#22312;&#26381;&#21153;&#22120;&#21551;&#21160;&#26102;&#33258;&#21160;&#36816;&#34892;&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20197;&#19979;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#20195;&#30721;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312; Laravel &#20013;&#21019;&#24314;&#21644;&#36816;&#34892;&#19968;&#20010;&#31616;&#21333;&#30340;&#21518;&#21488;&#20219;&#21153;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Console\/Commands\/SendEmails.php\nnamespace AppConsoleCommands;\n\nuse IlluminateConsoleCommand;\nuse Mail;\n\nclass SendEmails extends Command\n{\n    protected $signature = 'send-emails {--count}';\n\n    protected $description = 'Sends emails to a list of recipients';\n\n    public function handle()\n    {\n        $count = (int)$this-&gt;option('count') ?? 50;\n\n        for ($i = 0; $i &lt; $count; $i++) {\n            Mail::to('recipient@example.com')-&gt;send(new AppMailEmail($i));\n        }\n\n        $this-&gt;info(\"Sent {$count} emails successfully.\");\n    }\n}\n\n\/\/ app\/Console\/Kernel.php\nnamespace AppConsole;\n\nuse IlluminateConsoleSchedulingSchedule;\nuse IlluminateFoundationConsoleKernel as ConsoleKernel;\n\nclass Kernel extends ConsoleKernel\n{\n    protected $commands = [\n        \/\/ &#20854;&#20182;&#21629;&#20196;...\n    ];\n\n    protected function schedule(Schedule $schedule)\n    {\n        $schedule-&gt;command('send-emails')-&gt;everyMinute()-&gt;withoutOverlapping();\n    }\n\n    protected function bootstrap()\n    {\n        parent::bootstrap();\n\n        $this-&gt;commands([\n            \/\/ &#20854;&#20182;&#21629;&#20196;...\n        ]);\n\n        Schedule::runNowThroughOutTheDay(function () {\n            $this-&gt;call('send-emails');\n        });\n    }\n}<\/code><\/pre>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312; Laravel &#20013;&#36731;&#26494;&#22320;&#36816;&#34892;&#21518;&#21488;&#21644;&#23494;&#38598;&#22411;&#20219;&#21153;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#27010;&#35272;<\/h2><p>&#22312;&#20351;&#29992;Laravel&#26500;&#24314;Web&#24212;&#29992;&#31243;&#24207;&#26102;&#65292;&#21518;&#21488;&#36816;&#34892;&#32791;&#26102;&#20219;&#21153;&#23545;&#20110;&#30830;&#20445;&#24555;&#36895;&#21709;&#24212;&#26102;&#38388;&#21644;&#27969;&#30021;&#29992;&#25143;&#20307;&#39564;&#33267;&#20851;&#37325;&#35201;&#12290;&#26412;&#25991;&#28145;&#20837;&#25506;&#35752;&#20102;&#22914;&#20309;&#21033;&#29992;Laravel&#20869;&#32622;&#21151;&#33021;&#22914;&#38431;&#21015;&#12289;&#20316;&#19994;&#21644;&#20219;&#21153;&#35843;&#24230;&#26469;&#22996;&#25176;&#36164;&#28304;&#23494;&#38598;&#22411;&#20219;&#21153;&#12290;<\/p><h2>&#29702;&#35299;Laravel&#30340;&#38431;&#21015;&#31995;&#32479;<\/h2><p>&#22312;Laravel&#30340;&#21518;&#21488;&#22788;&#29702;&#26680;&#24515;&#20013;&#65292;&#38431;&#21015;&#31995;&#32479;&#36215;&#30528;&#37325;&#35201;&#20316;&#29992;&#12290;&#38431;&#21015;&#20801;&#35768;&#24744;&#25512;&#36831;&#26102;&#38388;&#28040;&#32791;&#30340;&#20219;&#21153;&#30452;&#21040;&#31245;&#21518;&#30340;&#26102;&#38388;&#65292;&#20174;&#32780;&#21152;&#24555;&#23545;&#24212;&#29992;&#31243;&#24207;&#30340;Web&#35831;&#27714;&#36895;&#24230;&#12290;<\/p><pre><code>php artisan queue:table\nphp artisan migrate<\/code><\/pre><p>&#36816;&#34892;&#19978;&#36848;&#21629;&#20196;&#21487;&#20197;&#35774;&#32622;&#25968;&#25454;&#24211;&#36801;&#31227;&#20197;&#29992;&#20110;&#38431;&#21015;&#20316;&#19994;&#65292;&#28982;&#21518;&#25191;&#34892;&#36801;&#31227;&#12290;<\/p><h2>&#21019;&#24314;&#23601;&#19994;&#26426;&#20250;<\/h2><p>&#22312;Laravel&#20013;&#65292;&#24037;&#20316;&#26426;&#20250;&#34920;&#31034;&#25490;&#38431;&#30340;&#20219;&#21153;&#12290;&#23427;&#20204;&#21487;&#20197;&#36890;&#36807;Artisan&#21629;&#20196;&#34892;&#25509;&#21475;&#29983;&#25104;&#12290;<\/p><pre><code>php artisan make:job ProcessPodcast<\/code><\/pre><p>&#35813;&#21629;&#20196;&#20250;&#22312;&#26032;&#30340;&#24037;&#20316;&#31867;&#19979;&#38754;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#24037;&#20316;&#31867;&#12290;<code>AppJobs<\/code>&#21629;&#21517;&#31354;&#38388;&#12290;&#28982;&#21518;&#23450;&#20041;&#23427;&#12290;<code>handle<\/code>&#35813;&#26041;&#27861;&#21253;&#21547;&#23558;&#22312;&#22788;&#29702;&#20316;&#19994;&#26102;&#25191;&#34892;&#30340;&#36923;&#36753;&#12290;<\/p><pre><code>namespace AppJobs;\n\nuse IlluminateBusQueueable;\nuse IlluminateQueueSerializesModels;\nuse IlluminateQueueInteractsWithQueue;\nuse IlluminateContractsQueueShouldQueue;\nuse IlluminateFoundationBusDispatchable;\n\nclass ProcessPodcast implements ShouldQueue\n{\n    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;\n\n    protected $podcast;\n\n    public function __construct(Podcast $podcast)\n    {\n        $this-&gt;podcast = $podcast;\n    }\n\n    public function handle()\n    {\n        \/\/ Process the podcast...\n    }\n}<\/code><\/pre><p>&#35201;&#27966;&#36963;&#19968;&#39033;&#24037;&#20316;&#65292;&#35831;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#25805;&#20316;&#65306;<\/p><pre><code>$podcast = AppPodcast::find(1);\nProcessPodcast::dispatch($podcast);<\/code><\/pre><h2>&#36873;&#25321;&#38431;&#21015;&#39537;&#21160;&#31243;&#24207;<\/h2><p>Laravel &#25903;&#25345;&#22810;&#31181;&#38431;&#21015;&#39537;&#21160;&#65292;&#20363;&#22914;&#65306;<code>database<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>redis<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>sqs<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>beanstalkd<\/code>&#65292;&#36824;&#26377;&#26356;&#22810;&#36873;&#25321;&#12290;&#35831;&#26681;&#25454;&#24744;&#30340;&#24212;&#29992;&#38656;&#27714;&#36873;&#25321;&#21512;&#36866;&#30340;&#21496;&#26426;&#65292;&#24182;&#36827;&#34892;&#37197;&#32622;&#12290;<code>config\/queue.php<\/code>&#24050;&#32463;&#25910;&#21040;&#25351;&#20196;&#65292;&#35831;&#38382;&#26377;&#20160;&#20040;&#25105;&#21487;&#20197;&#24110;&#21161;&#30340;&#21527;&#65311;<\/p><h2>&#36816;&#34892;&#38431;&#21015;&#22788;&#29702;&#22120;<\/h2><p>&#35201;&#22788;&#29702;&#38431;&#21015;&#20013;&#30340;&#20316;&#19994;&#65292;&#35831;&#36816;&#34892;&#38431;&#21015;&#24037;&#20316;&#32773;&#65306;<\/p><pre><code>php artisan queue:work<\/code><\/pre><p>&#24744;&#21487;&#20197;&#25351;&#23450;&#36830;&#25509;&#21644;&#38431;&#21015;&#21517;&#31216;&#65292;&#29978;&#33267;&#21487;&#20197;&#35774;&#32622;&#22312;&#22833;&#36133;&#21069;&#23581;&#35797;&#30340;&#27425;&#25968;&#12290;<\/p><h2>&#22788;&#29702;&#22833;&#36133;&#30340;&#20219;&#21153;&#12290;<\/h2><p>&#26377;&#26102;&#24037;&#20316;&#20250;&#22833;&#36133;&#65292;&#20320;&#38656;&#35201;&#19968;&#20010;&#31574;&#30053;&#26469;&#22788;&#29702;&#36825;&#31181;&#24773;&#20917;&#12290;Laravel &#25552;&#20379;&#20102;&#19968;&#20010;&#26426;&#21046;&#26469;&#23454;&#29616;&#36825;&#19968;&#28857;&#65306;<\/p><pre><code>php artisan queue:failed-table\nphp artisan migrate\nphp artisan queue:work --tries=3<\/code><\/pre><p>&#19978;&#36848;&#21629;&#20196;&#21019;&#24314;&#20102;&#19968;&#20010;&#34920;&#26469;&#23384;&#20648;&#20851;&#20110;&#22833;&#36133;&#20316;&#19994;&#30340;&#20449;&#24687;&#65292;&#24182;&#19988;&#22312;&#26631;&#35760;&#20316;&#19994;&#20026;&#22833;&#36133;&#20043;&#21069;&#35774;&#32622;&#20102;&#23581;&#35797;&#27425;&#25968;&#20026;&#19977;&#27425;&#12290;<\/p><h2>&#20219;&#21153;&#35843;&#24230;<\/h2><p>&#22312;&#26576;&#20123;&#24773;&#20917;&#19979;&#65292;&#24744;&#21487;&#33021;&#24076;&#26395;&#23433;&#25490;&#20219;&#21153;&#22312;&#29305;&#23450;&#30340;&#26102;&#38388;&#38388;&#38548;&#20869;&#36816;&#34892;&#12290;Laravel&#30340;&#20219;&#21153;&#35843;&#24230;&#22120;&#20801;&#35768;&#24744;&#36890;&#36807;&#31616;&#27905;&#30340;&#26041;&#24335;&#23450;&#20041;&#21629;&#20196;&#30340;&#25191;&#34892;&#21608;&#26399;&#12290;<code>app\/Console\/Kernel.php<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>protected function schedule(Schedule $schedule)\n{\n    $schedule-&gt;job(new ProcessPodcast)-&gt;everyMinute();\n}<\/code><\/pre><p>&#35201;&#28608;&#27963;&#35843;&#24230;&#65292;&#24744;&#38656;&#35201;&#22312;&#26381;&#21153;&#22120;&#19978;&#28155;&#21152;&#19968;&#20010;Cron&#26465;&#30446;&#65292;&#35813;&#26465;&#30446;&#27599;&#20998;&#38047;&#36816;&#34892;Laravel&#35843;&#24230;&#22120;&#65306;<\/p><pre><code>* * * * * cd \/path-to-your-project &amp;&amp; php artisan schedule:run &gt;&gt; \/dev\/null 2&gt;&amp;1<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#24744;&#30340;&#38382;&#39064;&#19981;&#23436;&#25972;&#12290;&#35831;&#37325;&#26032;&#25551;&#36848;&#24744;&#30340;&#38382;&#39064;&#12290;<code>schedule:run<\/code>&#21629;&#20196;&#23558;&#22312;&#25191;&#34892;&#25152;&#26377;&#21040;&#26399;&#30340;&#21629;&#20196;&#12290;<\/p><h2>&#30417;&#30563;&#25490;&#38431;&#26381;&#21153;&#21592;<\/h2><p>&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#65292;&#30830;&#20445;&#38431;&#21015;&#24037;&#20154;&#30340;&#25345;&#32493;&#36816;&#34892;&#33267;&#20851;&#37325;&#35201;&#12290;&#20320;&#21487;&#20197;&#20351;&#29992;&#31867;&#20284;&#20110;&#36827;&#31243;&#30417;&#35270;&#22120;&#30340;&#24037;&#20855;&#12290;<code>Supervisor<\/code>&#20026;&#20102;&#33258;&#21160;&#37325;&#21551;&#22833;&#36133;&#30340;&#38431;&#21015;&#24037;&#20316;&#32773;&#12290;<\/p><p>&#20026;&#20102;&#37197;&#32622;Supervisor&#65292;&#38656;&#35201;&#22312;\/etc\/&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#37197;&#32622;&#25991;&#20214;&#12290;<code>\/etc\/supervisor\/conf.d\/your-program-name.conf<\/code>&#26681;&#25454;&#24744;&#30340;Laravel&#24212;&#29992;&#23450;&#21046;&#30340;&#35774;&#32622;&#12290;<\/p><h2>&#30830;&#20445;&#38431;&#21015;&#30340;&#23433;&#20840;&#24615;<\/h2><p>&#35201;&#30830;&#20445;&#38431;&#21015;&#24037;&#20316;&#32773;&#21644;&#30028;&#38754;&#30340;&#23433;&#20840;&#65292;&#22987;&#32456;&#39564;&#35777;&#20316;&#19994;&#31867;&#20381;&#36182;&#20851;&#31995;&#21644;&#25968;&#25454;&#65292;&#24182;&#20351;&#29992;&ndash;timeout&#36873;&#39033;&#20197;&#38450;&#27490;&#20316;&#19994;&#26080;&#38480;&#26399;&#36816;&#34892;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#21518;&#21488;&#36816;&#34892;&#32791;&#26102;&#20219;&#21153;&#21487;&#20197;&#26174;&#33879;&#25552;&#39640;&#24212;&#29992;&#31243;&#24207;&#30340;&#24615;&#33021;&#12290;&#36890;&#36807;&#21033;&#29992;Laravel&#30340;&#38431;&#21015;&#31995;&#32479;&#65292;&#24744;&#21487;&#20197;&#39640;&#25928;&#22320;&#31649;&#29702;&#21518;&#21488;&#20219;&#21153;&#12290;&#35760;&#20303;&#35201;&#30830;&#20445;&#24744;&#30340;&#38431;&#21015;&#23433;&#20840;&#65292;&#20248;&#38597;&#22788;&#29702;&#20316;&#19994;&#22833;&#36133;&#65292;&#24182;&#36873;&#25321;&#36866;&#29992;&#20110;&#24744;&#29615;&#22659;&#30340;&#38431;&#21015;&#39537;&#21160;&#31243;&#24207;&#12290;<\/p><p>&#35831;&#27880;&#24847;&#24443;&#24213;&#27979;&#35797;&#24744;&#30340;&#24037;&#20316;&#65292;&#20197;&#30830;&#20445;&#22312;&#24744;&#25193;&#23637;&#24212;&#29992;&#31243;&#24207;&#26102;&#36816;&#34892;&#39034;&#30021;&#12290;&#24841;&#24555;&#32534;&#30721;&#65281;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Laravel &#20013;&#36827;&#34892;&#21518;&#21488;&#21644;&#23494;&#38598;&#22411;&#20219;&#21153;&#36890;&#24120;&#28041;&#21450;&#20351;&#29992; Laravel &#30340;&#20013;&#38388;&#20214;&#65288;Middleware&#65289;&#26469;&#23454;&#29616;&#36825;&#19968;&#21151;&#33021;&#12290;&#19979;&#38754;&#23558;&#35814;&#32454;&#20171;&#32461;&#22914;&#20309;&#36890;&#36807;&#36825;&#20123;&#20013;&#38388;&#20214;&#26469;&#25191;&#34892;&#21518;&#21488;&#25805;&#20316;&#21644;&#23494;&#38598;&#22411;&#20219;&#21153;&#12290;<\/p>\n<h3>1. &#37197;&#32622;&#20013;&#38388;&#20214;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#22312;&#24744;&#30340; <code>config\/app.php<\/code> &#25991;&#20214;&#20013;&#21551;&#29992;&#20102;&#20013;&#38388;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">'middlewares' =&gt; [\n    'IlluminateRoutingMiddlewareSubstituteForNextMiddleware',\n],<\/code><\/pre>\n<p>&#36825;&#20250;&#21551;&#29992; Laravel &#30340;&#26631;&#20934;&#20013;&#38388;&#20214;&#65292;&#21253;&#25324;&#20102;&#36335;&#30001;&#22788;&#29702;&#22120;&#20013;&#38388;&#20214;&#65288;&#29992;&#20110;&#22788;&#29702;&#36335;&#30001;&#35831;&#27714;&#65289;&#65292;&#25511;&#21046;&#22120;&#22788;&#29702;&#22120;&#20013;&#38388;&#20214;&#65288;&#29992;&#20110;&#22788;&#29702;&#25511;&#21046;&#22120;&#35831;&#27714;&#65289;&#65292;&#20197;&#21450;&#35270;&#22270;&#22788;&#29702;&#22120;&#20013;&#38388;&#20214;&#65288;&#29992;&#20110;&#22788;&#29702;&#35270;&#22270;&#35831;&#27714;&#65289;&#12290;&#23545;&#20110;&#21518;&#21488;&#21644;&#23494;&#38598;&#22411;&#20219;&#21153;&#65292;&#25105;&#20204;&#21487;&#20197;&#36873;&#25321;&#24615;&#30340;&#24320;&#21551;&#20854;&#20182;&#20013;&#38388;&#20214;&#65292;&#22914;&#23433;&#20840;&#20013;&#38388;&#20214;&#65288;&#29992;&#20110;&#20445;&#25252;&#24212;&#29992;&#31243;&#24207;&#20813;&#21463;&#24120;&#35265;&#30340;&#23433;&#20840;&#23041;&#32961;&#65289;&#12289;&#25968;&#25454;&#24211;&#36830;&#25509;&#20013;&#38388;&#20214;&#31561;&#12290;<\/p>\n<h3>2. &#20351;&#29992;&#20013;&#38388;&#20214;&#30340;&#21518;&#21488;&#25805;&#20316;<\/h3>\n<h4>2.1 &#35774;&#32622;&#20013;&#38388;&#20214;&#20026;&#21518;&#21488;&#25805;&#20316;<\/h4>\n<p>&#20026;&#20102;&#20351; Laravel &#33021;&#22815;&#22788;&#29702;&#21518;&#21488;&#25805;&#20316;&#65292;&#25105;&#20204;&#38656;&#35201;&#22312;&#30456;&#24212;&#30340;&#25511;&#21046;&#22120;&#26041;&#27861;&#19978;&#28155;&#21152;&#20013;&#38388;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">public function index()\n{\n    \/\/ ...\n    $this-&gt;middleware('auth')-&gt;except(['index']);\n}<\/code><\/pre>\n<p>&#36825;&#37324;&#25105;&#20204;&#35774;&#32622;&#20102;&#19968;&#20010;&#20013;&#38388;&#20214;&#65292;&#21482;&#20801;&#35768;&#26410;&#30331;&#24405;&#30340;&#29992;&#25143;&#35775;&#38382; <code>index<\/code> &#26041;&#27861;&#12290;&#22914;&#26524;&#38656;&#35201;&#26356;&#22797;&#26434;&#30340;&#26435;&#38480;&#25511;&#21046;&#36923;&#36753;&#65292;&#21487;&#20197;&#36827;&#19968;&#27493;&#35843;&#25972;&#27492;&#20013;&#38388;&#20214;&#12290;<\/p>\n<h4>2.2 &#22788;&#29702;&#21518;&#21488;&#25805;&#20316;<\/h4>\n<p>&#29616;&#22312;&#65292;&#24744;&#21487;&#20197;&#22312;&#21518;&#21488;&#25511;&#21046;&#22120;&#30340;&#26041;&#27861;&#20013;&#35843;&#29992;&#20013;&#38388;&#20214;&#65292;&#20363;&#22914;&#65306;<\/p>\n<pre><code class=\"language-php\">public function show($id)\n{\n    \/\/ ...\n    if ($this-&gt;checkBackendAccess()) {\n        $this-&gt;dispatch(new BackendAction());\n    }\n    \/\/ ...\n\n    return view('backend.show');\n}\n\nprivate function checkBackendAccess(): bool\n{\n    \/\/ &#26816;&#26597;&#26159;&#21542;&#20855;&#26377;&#21518;&#21488;&#35775;&#38382;&#26435;&#38480;\n    return true; \/\/ &#25110;&#32773;&#26681;&#25454;&#23454;&#38469;&#24773;&#20917;&#36820;&#22238;&#24067;&#23572;&#20540;\n}\n\n\/\/ &#31034;&#20363;: &#21457;&#36865;&#21518;&#21488;&#20219;&#21153;\nprotected function dispatch(BackendAction $action): void\n{\n    \/\/ &#25191;&#34892;&#21518;&#21488;&#20219;&#21153;\n    $action-&gt;execute();\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#24403;&#29992;&#25143;&#23581;&#35797;&#35775;&#38382;&#24102;&#26377; <code>show<\/code> &#26041;&#27861;&#30340;&#21518;&#21488;&#39029;&#38754;&#26102;&#65292;&#22914;&#26524;&#20182;&#20204;&#27809;&#26377;&#34987;&#26631;&#35760;&#20026;&#20855;&#26377;&#21518;&#21488;&#35775;&#38382;&#26435;&#38480;&#65292;&#21017;&#20250;&#35302;&#21457; <code>checkBackendAccess()<\/code> &#20989;&#25968;&#65292;&#24182;&#26681;&#25454;&#32467;&#26524;&#20915;&#23450;&#26159;&#21542;&#25191;&#34892;&#21518;&#21488;&#20219;&#21153;&#12290;&#36825;&#20010;&#36807;&#31243;&#21487;&#20197;&#36890;&#36807;&#21508;&#31181;&#26041;&#24335;&#23436;&#25104;&#65292;&#20363;&#22914;&#30452;&#25509;&#25191;&#34892;&#21518;&#21488;&#20219;&#21153;&#25110;&#32773;&#23558;&#20854;&#22996;&#25176;&#32473;&#20854;&#20182;&#26381;&#21153;&#36827;&#34892;&#22788;&#29702;&#12290;<\/p>\n<h3>3. &#36816;&#34892;&#23494;&#38598;&#22411;&#20219;&#21153;<\/h3>\n<p>&#22914;&#26524;&#24744;&#24819;&#35201;&#22312;&#21518;&#21488;&#25191;&#34892;&#19968;&#20123;&#38271;&#26102;&#38388;&#36816;&#34892;&#30340;&#20219;&#21153;&#65292;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992; Laravel &#30340; <code>Forking<\/code> &#21644; <code>ProcessManager<\/code> &#20013;&#38388;&#20214;&#12290;&#36825;&#20123;&#20013;&#38388;&#20214;&#21487;&#20197;&#24110;&#21161;&#24744;&#23558;&#20219;&#21153;&#20174;&#24403;&#21069;&#36827;&#31243;&#20998;&#21457;&#21040;&#23376;&#36827;&#31243;&#20013;&#25191;&#34892;&#65292;&#20174;&#32780;&#36991;&#20813;&#38459;&#22622;&#20027;&#32447;&#31243;&#24182;&#25552;&#39640;&#24182;&#21457;&#24615;&#33021;&#12290;<\/p>\n<h4>3.1 &#21019;&#24314;&#20013;&#38388;&#20214;&#31867;<\/h4>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#20013;&#38388;&#20214;&#31867;&#26469;&#31649;&#29702;&#21518;&#21488;&#20219;&#21153;&#65292;&#20363;&#22914;&#65306;<\/p>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesFacade;\n\nclass BackgroundTask extends Facade\n{\n    protected static function getFacadeAccessor()\n    {\n        return 'background_task';\n    }\n\n    public function handleBackgroundTask($job)\n    {\n        \/\/ &#22312;&#36825;&#37324;&#32534;&#20889;&#21518;&#21488;&#20219;&#21153;&#36923;&#36753;\n    }\n}<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#22312; <code>app\/Providers\/AppServiceProvider.php<\/code> &#25991;&#20214;&#20013;&#27880;&#20876;&#35813;&#20013;&#38388;&#20214;&#65306;<\/p>\n<pre><code class=\"language-php\">use AppJobsBackgroundJob;\nuse IlluminateSupportFacadesApp;\n\nApp::singleton('background_task', function () {\n    return new BackgroundTask();\n});<\/code><\/pre>\n<h4>3.2 &#23450;&#20041;&#21518;&#21488;&#20219;&#21153;<\/h4>\n<p>&#23450;&#20041;&#19968;&#20010;&#21518;&#21488;&#20219;&#21153;&#65292;&#20363;&#22914;&#65306;<\/p>\n<pre><code class=\"language-php\">class BackgroundJob extends Job\n{\n    public function handle()\n    {\n        \/\/ &#36825;&#37324;&#26159;&#21518;&#21488;&#20219;&#21153;&#30340;&#23454;&#38469;&#22788;&#29702;&#36923;&#36753;\n    }\n}<\/code><\/pre>\n<h4>3.3 &#21551;&#21160;&#21518;&#21488;&#20219;&#21153;<\/h4>\n<p>&#26368;&#21518;&#65292;&#21551;&#21160;&#21518;&#21488;&#20219;&#21153;&#65292;&#27604;&#22914;&#36890;&#36807;&#21629;&#20196;&#34892;&#24037;&#20855;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan queue:listen --queue=background<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#21518;&#21488;&#20219;&#21153;&#23558;&#22312;&#21518;&#21488;&#32447;&#31243;&#20013;&#36816;&#34892;&#65292;&#32780;&#19981;&#20250;&#24433;&#21709;&#21040;&#20027;&#24212;&#29992;&#30340;&#21709;&#24212;&#36895;&#24230;&#12290;<\/p>\n<p>&#20197;&#19978;&#23601;&#26159;&#22312; Laravel &#20013;&#37197;&#32622;&#21644;&#23454;&#26045;&#21518;&#21488;&#25805;&#20316;&#21644;&#23494;&#38598;&#22411;&#20219;&#21153;&#30340;&#22522;&#26412;&#27969;&#31243;&#12290;&#24744;&#21487;&#20197;&#26681;&#25454;&#20855;&#20307;&#38656;&#27714;&#28789;&#27963;&#35843;&#25972;&#20013;&#38388;&#20214;&#37197;&#32622;&#21644;&#20219;&#21153;&#36923;&#36753;&#65292;&#20197;&#28385;&#36275;&#19981;&#21516;&#22330;&#26223;&#19979;&#30340;&#38656;&#27714;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#36816;&#34892;&#21518;&#21488;&#21644;&#23494;&#38598;&#22411;&#20219;&#21153;&#26159;&#19968;&#20010;&#038;#2..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-863","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=863"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=863"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=863"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}