婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php定期拉取數據對比方法實例

php定期拉取數據對比方法實例

熱門標簽:聊城電話外呼系統公司 辦理重慶400電話 沛縣400電話辦理 青白江地圖標注 智能電話機器人好公司門薩維 江蘇電商外呼系統運營商 AI電話機器人OEM貼牌 銅川電話機器人價格 德陽中江如何申請400開頭電話

寫在前面

今天在網上看帖子提問的時候,看到有人發表了一個提問

php下載遠程的批量文件,每天一次,對比昨天和今天的文件,將舊文件替換成新文件

我們通過這個問題來分析講解一下其中的知識點。

首先要解決的問題是:如何讓程序每天自動執行一次腳本

php定時執行任務

關于定時執行,最常見的方法是利用系統級別自帶的功能

  • linux ( crontab 定時任務命令) windows計劃任務

這需要手動修改系統的任務文件,然后使其生效

手動在linux添加定時任務

# crontab -e

運行該命令 打開任務編輯 在其中輸入任務內容,然后Esc :wq保存退出

任務示例

0 0 * * * /www/siam/test.sh

前面的是運行周期的配置,后面的是sh腳本的路徑,該方式一般需要自己編寫sh腳本來執行

寶塔面板快速計劃任務

如果我們使用寶塔面板當成運維工具,那么我們就可以很方便地添加計劃任務了,如下圖,寶塔中內置了挺多計劃任務的類型,如定時請求URL,運行腳本,備份文件等等。

可視化配置,帶給我們極大的便利,維護、添加都節約了很多的時間。

這也是為什么寶塔受到那么多人喜愛的原因之一吧。

寶塔面板計劃任務的面板添加
取巧云監控定時執行
以上兩種方式都需要服務器的權限,我們才可以管理定時任務,假設我們剛入門時使用的是虛擬主機,沒有權限設置腳本運行,那么該如何實現這種功能呢?

這里記錄了我以前學習時利用的一個小方案,大家可以在其中學習一下。

云監控,是很多云服務商提供的一項服務,它可以用來測試、分析接口或者網站的穩定性和執行效率。

我們可以在服務商的后臺類似寶塔面板一樣去添加任務,然后服務商就會按我們設置的頻率,定期訪問網址,獲取網址的正確執行、時間等信息,記錄到他們后臺,提供給用戶查看分析改進。

我們可以利用這種特性,由服務商向我們的服務發起請求,我們可以填寫一個php腳本的url,在其中判斷當前時間,如果當前時間周期已經到了你設置的時間,則執行下面的內容

同時因為云監控是不間斷地發起(一般最細顆粒是30s) 如果不能重復運行的任務,我們需要及時地把任務標記為已經執行。

可以在本地寫文件,當文件鎖。

不同云監控服務商有不同的設置和服務提供,網上有挺多免費的。大家可以找一找,如果找不到好的,也可以聯系我QQ交流一下。

現代化PHP

PHP發展了這么久,其實已經有了很大的改進,比如PHP5OOP特性的完善、PHP7的性能提高、Swoole生態的出現,讓PHP能做的事越來越多,越做越好。

在當今環境中,我們可以使用SWOOLE常駐內存的特性完成很多事,

這里推薦一下EasySwoole這款基于Swoole環境的框架。

關于定時任務在EasySwoole框架中的文檔地址點這里EasySwoole Crontab 定時器

常駐內存的程序,在服務器上后臺穩定運行,

EasySwoole中提供了豐富的組件,比如傳統PHPFPM環境很難解決的Mysql數據庫連接池、協程Redis客戶端、協程Http客戶端、芒果DB客戶端等等

還有我們這個主題有的一個定時任務的模塊,下面看一小段demo代碼

首先在主環境事件代碼中開啟定時任務

public static function mainServerCreate(EventRegister $register)
{
  // 開始一個定時任務計劃
  Crontab::getInstance()->addTask(TaskOne::class);
}

定時任務的配置和內容

namespace App\Crontab;

use EasySwoole\EasySwoole\Crontab\AbstractCronTask;

class TaskOne extends AbstractCronTask
{

  public static function getRule(): string
  {
    // TODO: Implement getRule() method.
    // 定時周期 (每小時)
    return '@hourly';
  }

  public static function getTaskName(): string
  {
    // TODO: Implement getTaskName() method.
    // 定時任務名稱
    return 'taskOne';
  }

  static function run(\swoole_server $server, int $taskId, int $fromWorkerId,$flags=null)
  {
    // 定時任務處理邏輯

    // 我們在這里執行拉取文件、對比處理、保存文件的邏輯就好了
    var_dump('run once per hour');
  }
}

其他問題

解決了定時執行的問題,那么下載文件和保存文件,我覺得應該都不會是很大的問題

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • PHP大批量插入數據庫的3種方法和速度對比
  • php中數據庫連接方式pdo和mysqli對比分析
  • PHP數據庫連接mysql與mysqli對比分析
  • php使用mysqli和pdo擴展,測試對比mysql數據庫的執行效率完整示例
  • php使用mysqli和pdo擴展,測試對比連接mysql數據庫的效率完整示例

標簽:山南 赤峰 三亞 迪慶 鷹潭 南寧 烏魯木齊 濟寧

巨人網絡通訊聲明:本文標題《php定期拉取數據對比方法實例》,本文關鍵詞  php,定期,拉取,數據,對比,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php定期拉取數據對比方法實例》相關的同類信息!
  • 本頁收集關于php定期拉取數據對比方法實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 崇左市| 饶阳县| 葫芦岛市| 敖汉旗| 甘德县| 普陀区| 金湖县| 乐昌市| 互助| 武宁县| 安宁市| 万山特区| 永靖县| 吉水县| 蒙山县| 桃园市| 三门峡市| 涪陵区| 阳谷县| 维西| 津市市| 大渡口区| 泗洪县| 永和县| 十堰市| 青浦区| 繁昌县| 新乡县| 沧州市| 永年县| 双流县| 武清区| 玛纳斯县| 安福县| 韶山市| 巴楚县| 晋州市| 南宁市| 得荣县| 横山县| 武义县|