簡體   English   中英

我如何在Azure中為PHP應用程序設置Webjob

[英]How can i setup a webjob in azure for a php application

我有一種情況,我每天需要為我的php應用程序處理大量的數據庫數據。 我的應用程序部署在azure上,它是一個Web應用程序,並基於codeigniter v3.x構建。 我已經能夠使用.bat文件和.php文件在本地窗口計算機上運行計划。

這是我的批處理文件的內容

start D:\xampp\php\php.exe -f D:\xampp\htdocs\phpcode\cron.php

我可以寫這個,因為我知道php的確切路徑。 現在有一個簡單的php文件cron.php可以完成任務。 但是我計划的是編寫一個控制器類,並從調度程序中調用其功能。

start <the path of php executable on azure> <call to something like 'http://www.example.com/controllername/functionname>

請指教。 任何其他解決方案也將有所幫助

由於您想每天運行一次腳本,因此這里有一個簡單的解決方案,請告訴我它是否不能滿足您的需求,還有其他:)。

  1. 創建2個包含php和bat文件的zip文件(每個zip 1個文件)
  2. 轉到舊的Azure門戶( https://manage.windowsazure.com
  3. 轉到您的網站,選擇“ webjob”選項卡。
  4. 按下添加工作
  5. 上傳您的一個Zip文件,然后在“如何運行”選擇框中選擇“按計划運行”,然后按下一步
  6. 在下一個屏幕上,選擇“周期性工作”,然后每天重復一次。
  7. 從第4點開始使用其他腳本重復

現在,該作業將在您設置的時間每天運行! 告訴我解決方案是否可以解決您的問題!

干杯,

麥克風

@mandrax答案的補充很少。

  • 您不需要批處理文件,只需將php文件用作WebJob,Azure將運行它。

  • 您可以使用此答案中描述的WebJob調度程序,基本上,您只需在WebJob中添加一個名為settings.job的文件,並將該時間表描述為cron表達式即可。

    例如{"schedule": "0 0 0 * * *"}每天凌晨12點一次。

我想讓一個Webjob使用CodeIgniter的MVC結構運行,但是似乎沒有人可以在我能找到的任何地方回答這個問題。 經過數小時的搜索和測試,這就是答案。

您需要一個批處理文件來手動調用php.exe,並將CI的索引作為頁面,並將控制器和方法作為參數。 在此示例中,我的控制器稱為“ cron”,而我的方法為“ clean_uploads”。 如果您想在瀏覽器中手動訪問它,請訪問http://yoursite.com/cron/clean_uploads

REM Set PHP location
SET php="D:\Program Files (x86)\PHP\v5.6\php.exe"

REM Set Index Location
SET index="D:\home\site\wwwroot\index.php"

REM Set Controller
SET controller="cron"

REM Set Method
SET method="clean_uploads"

REM Run Command
%php% %index% %controller% %method%

要找到php.exe和index.php的位置,您需要在CI控制器中運行以下命令:

$php_location   = exec("where php.exe");
$index_location = FCPATH . "index.php";

echo 'SET php="' . $php_location . '"' . "\n";
echo 'SET index="' . $index_location . '"' . "\n";

如果要禁用通過瀏覽器對控制器的訪問,請將以下內容添加到構造函數中:

    if (php_sapi_name() != "cli") {
        show_404();
    }

希望對別人有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM