[英]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.