路老闆個人品牌網站
0
  • 會員登入
  • 關於我們
    回主選單
    • 關於我們
  • 服務項目
  • 我的錄音小間
  • 課程活動
    回主選單
    • 線上課程
    • 預約服務
    • 活動報名
  • 商品總覽
  • 創作與紀錄
    回主選單
    • 部落格
    • 影像紀錄
    • Podcast
    • 我的作品
  • 最新消息
  • 聯絡我們
  • Join us
  • Login
  • 0
    路老闆個人品牌網站
  • 關於我們
    關於我們
  • 服務項目
  • 我的錄音小間
  • 課程活動
    線上課程 預約服務 活動報名
  • 商品總覽
  • 創作與紀錄
    部落格 影像紀錄 Podcast 我的作品
  • 最新消息
  • 聯絡我們
部落格
  • 文章總覽
  • 分類
  • 技術筆記
  • 日本旅遊
  • 網站搬家
  • 時事觀察
  • 投資理財
  • 公司經營
  • 主機架設
  • 接案
  • 遊戲心得
  • 產品開箱
  • 網頁相關
  • 金流串接
  • 遊戲經濟
  • 閒聊
  • 直銷
  • CodeIgniter
  • cpanel
  • 出書材料
  • 個人品牌
  • SEO
  • 讀書心得
  • 金流物流
  • 線上課程心得
  • 日劇
    • 大河劇
      • 真田丸
  • AI
91app ClubHouse php8 imunify360 cdn apache php nginx linode digitalocean
  1. 首頁
  2. 部落格
  3. 避免 cron 程式重複執行

避免 cron 程式重複執行

2015 Sep 23 未分類

寫 cron 自動執行的時候

一直有個困擾

因為時間到

cron 就會把你指定的命令叫起來執行

無標題



程式被叫起來的中間

總是會有個時間間隔

間隔中

如果程式執行不完

cron 又會再把程式叫起來一次

然後越跑越多

就會出現事情搶著做 重複做 的問題

(資訊工程上叫做 Race Condition)

然後機器就會被拖垮

這可是大事情


其實很久以前就遇到這個問題

因為有念過資工

所以知道要弄 lock 或是 critical section 之類的

讓後續跑起來的程式去 check 這個 lock

如果還在跑 就放棄

自己寫有點麻煩

雖然有些 function 可以弄這些功能

但沒控制好還是有爆炸的可能


最近又遇到了一樣的狀況

想說查一下有沒有什麼新的作法

果然查到了

https://ma.ttias.be/prevent-cronjobs-from-overlapping-in-linux/

其實也不是什麼新方法

只是之前沒查到比較像樣的方法

文中提到三個方法

1. flock

2. pgrep

3. 自己寫 (用鎖檔案的方式)

其中 1 最簡單

原本的 cron 是這樣 (用一個 php 解譯器去跑一個 php 程式)

* * * * * /usr/bin/php /path/to/cron.php

你只要改成這樣

* * * * * /usr/bin/flock -w 0 /path/to/cron.lock /usr/bin/php /path/to/cron.php

/path/to/cron.lock <= 這個是一個 lock 的檔案

2比較麻煩 (就不介紹了)

3自己寫更麻煩

會這招以後

你就可以把 cron 的時間設定密集一點

如果上一個工作一做完

下一個 cron 就可以接上

既不浪費時間 又可以避免重複執行

  • 分享此文章
0則留言

相關文章

泛舟哥大戰E奶小模

[phpMyAdmin] 關閉記住排序欄位的功能

這種行銷公司你敢委託他嘛?

你還在跟這種程度的網頁設計師合作嘛?

台灣勞工不是奴沒道理的

GCP cpanel/WHM 重開機 hostname 被換掉的問題

關於路老闆

推薦連結

  • Alice 你的理財陪跑教練
  • 羅鈞鴻/小虎老師
  • 徐慧玲Lynn
  • 寶寶牙醫 沈醫師
  • 保險資訊懶人包
  • 你的好感度教練
  • 天下為暢

聯絡我們

  • Email: louis@boss-louis.tw
  • 營業時間: 09:00~18:00
  • 聯絡電話: 02-77252950
  • 地址: 106 台北市大安區忠孝東路四段270號17樓
  • 隱私權政策
COPYRIGHT ©路老闆個人品牌網站 All rights reserved | Powered by 路老闆