[英]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>
請指教。 任何其他解決方案也將有所幫助
由於您想每天運行一次腳本,因此這里有一個簡單的解決方案,請告訴我它是否不能滿足您的需求,還有其他:)。
現在,該作業將在您設置的時間每天運行! 告訴我解決方案是否可以解決您的問題!
干杯,
麥克風
@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.