[英]using curl to cronjob a url
我在MediaTemple上托管了一個關於php-Codeigniter的應用程序,並且我想讓cron作業運行一個控制器,支持人員告訴我使用我嘗試使用的CURL,但沒有成功,例如:
curl http://mydomain.com/admin/action/get
我的控制器向數據庫中插入了一些信息,curl不會顯示錯誤,但是只有當我直接在瀏覽器上運行控制器時,插入操作才會發生。 無需身份驗證。
任何想法?
謝謝
在人們真正幫助您之前,您需要提供有關正在發生的事情的更多信息。 請參閱此有用的指南來提問 。
一些起點:
curl
如何提供它。 如果沒有,請注意,您正在允許Internet上的任何人啟動此過程,這可能會導致拒絕服務攻擊或其他安全問題。 或者...您可以只編寫旨在在CLI上運行的PHP腳本,然后將cron任務直接分配給php文件:
php -f /path/to/my/file.php
以下是有關在CLI上使用PHP的一些信息 。 使用CodeIgniter 可以執行此操作 。
就是說,有一種方法可以確定請求是否到了任何地方。 (除了保存請求的輸出外)CodeIgniter配備了出色的日志記錄方法。 您可以將application / config / config.php中的$config['log_threshold']
設置$config['log_threshold']
3
。 在兩個瀏覽器中運行請求,然后在CLI中運行一次。 然后在您的application / logs文件夾中查找當天的日志文件。 在文件中找到您要的URL。 應該在兩個地方記錄它。 如果日志文件中的請求數量少於您所請求的數量,則說明CURL出了點問題。 否則,您知道該應用程序有問題。
只需創建一個cronactivator.php文件,然后將cronjob指向該文件即可。 無需CURL。
<?php
//for php4 use fopen
$html_data = file_get_contents('http://www.yoursite.com/framework/controller/action', 'r');
echo "DONE!";
exit;
?>
@seth-我不在Linux機器上,因此無法真正進行測試,但是您的問題是未安裝curl本身或curl需要某些特定的開關才能工作 。
如果仍然希望它能夠正常工作,請首先通過服務器的SSH(在Windows上使用Putty)使其正常工作,或者可以編寫腳本對其進行測試;
<?php
$code=system('curl --help');
echo '<br><br> Exit Code: '.$code;
?>
如果它寫入的錯誤代碼不是0,那不是CURL有問題。
另一方面,您可以改用wget
。 在Linux上,它比CURL(afaik)更受支持。 盡管我是CURL的忠實擁護者,但恰恰是wget
在此類工作中更受歡迎。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.