Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

啟動 & 停止 Laravel queue worker in Bash

Posted on 2023 年 4 月 2 日2023 年 4 月 2 日 By 日落 在〈啟動 & 停止 Laravel queue worker in Bash〉中有 5 則留言

Laravel 的 queue worker 與 Horizon 需要透過 artisan queue:work 在背景執行,若可以的話,再使用 systemd 或 supervisor 來監控運作狀態。

不過 systemd 和 supervisor 都需要 root 權限來操作,說起來蠻麻煩的,所以寫了一小段 shell script 來啟動與停止,沒辦法在 worker 中斷時 restart,但可以做 graceful start & shutdown。

啟動 queue worker:

./artisan queue:work \
    --no-interaction --no-ansi >> storage/logs/queue.log 2>&1 &

# 透過 $? 來檢查指令執行是否成功
if [ $? -ne 0 ]; then
    echo "FAILED !"
else
    echo "OK"
fi

停止所有的 queue worker:

# queue:restart 會送訊號給所有的 worker 來 graceful shutdown
./artisan queue:restart --quiet --no-ansi

# 檢查是否所有的 proccess 都停止
while [ 1 ]; do
    QUERY="$(ps -ef | grep queue:work | grep -v grep)"
    if [ -z "${QUERY}" ]; then
        break
    else
        sleep 1
    fi
done
echo "OK"

Laravel Horizon 的操作相對簡單一些。

啟動 Horizon:

./artisan horizon \
    --quiet --no-interaction --no-ansi >> storage/logs/horizon.log 2>&1 &

if [ $? -ne 0 ]; then
    echo "FAILED !"
else
    echo "OK"
fi

停止 Horizon:

artisan horizon:terminate --quiet --no-interaction --no-ansi

# 檢查 proccess 是否終止
while [ 1 ]; do
	QUERY="$(ps -ef | grep horizon | grep -v grep)"
	if [ -z "${QUERY}" ]; then
		echo "OK"
	else
		sleep 1
	fi
done
Tags:Bash, Laravel, Linux

Laravel Horizon 僅支援 queue in Redis

Posted on 2023 年 4 月 2 日2023 年 4 月 2 日 By 日落 在〈Laravel Horizon 僅支援 queue in Redis〉中尚無留言

透過 Laravel Horizon 可以快速監看 queued jobs 的運作狀況,不過要注意的是僅支援資料放在 Redis 中的 queue:

Laravel Horizon requires that you use Redis to power your queue. Therefore, you should ensure that your queue connection is set to redis in your application’s config/queue.php configuration file.

所以要先檢查幾個項目:

  • 記得 composer reuqire predis/predis
  • 在 .env 中的 QUEUE_CONNECTION 數值必須是 redis
  • config/queue.php 中的 default 建議直接改成 redis
Tags:Laravel, PHP, Redis

在 tar 中使用 zstd 壓縮

Posted on 2023 年 3 月 13 日2023 年 3 月 13 日 By 日落 在〈在 tar 中使用 zstd 壓縮〉中有 2 則留言

在 CloneZilla 中看到 zstd 這個壓縮工具,其演算法由 Facebook 開發,速度和壓縮比介於 gzip 和 bzip2 之間,且支援 multi-thread,打包大量資料時蠻好用的。

使用 tar 時,使用 -I 參數來使用 zstd:

tar -I zstdmt -cf pack.tar.zst logs/

備註:zstdmt 是 zstd -T0 的 alias

Tags:Linux

在 alpine 中安裝 pdo_pgsql

Posted on 2023 年 3 月 9 日2023 年 3 月 9 日 By 日落 在〈在 alpine 中安裝 pdo_pgsql〉中尚無留言

如果只執行 docker-php-ext-install 會出現錯誤訊息:

PHP Startup: Unable to load dynamic library 'pdo_pgsql.so'

必須安裝 postgresql-dev 套件,完整設定為:

RUN apk add --no-cache postgresql-dev && \
    docker-php-ext-install pdo pdo_pgsql pgsql
Tags:Docker

wait-for-it 檢查、等待服務啟動

Posted on 2023 年 3 月 8 日2023 年 3 月 8 日 By 日落 在〈wait-for-it 檢查、等待服務啟動〉中尚無留言

wait-for-it 是個 shell script 撰寫的工具,會等待並檢查目標是否可以進行 TCP 連線。

例如等待 mysql 啟動:

$ wait-for-it 127.0.0.1:3306
wait-for-it: waiting 15 seconds for 127.0.0.1:3306

可以在 docker 中檢查其他 container / service 是否啟動,可以的話才繼續執行:

# wait for MySQL to initialize
wait-for-it db:3306

# run DB migration
php artisan migrate
Tags:Docker, Linux

文章分頁

上一頁 1 ... 18 19 20 ... 318 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.