2009-09-10 110 views
1

我有一個應用程序在php MediaTemple託管的php-Codeigniter,我想有一個cron作業運行一個控制器,支持告訴我使用CURL我嘗試使用沒有任何成功,例如:使用捲曲cronjob一個url

curl http://mydomain.com/admin/action/get 

我的控制器向數據庫中插入一些信息,curl不顯示錯誤,但只有當我直接在瀏覽器上運行控制器時,插入纔會發生。不需要授權。

有什麼想法嗎?

謝謝

+0

您可以隨時嘗試wget而不是捲曲。 – 2009-09-11 00:49:29

回答

2

您需要提供更多關於人們能真正幫助您之前發生的事情的信息。請參閱此helpful guide to asking questions

一些出發點:

  1. 當您從命令行命令,會發生什麼?
  2. 當您在Web瀏覽器中轉到控制器URL時會發生什麼?
  3. 你的「沒有任何成功」是由什麼組成的?你在尋找什麼成功的跡象,你在觀察什麼?
  4. 您的控制器是否需要驗證?如果是這樣,你需要告訴curl如何提供它。如果沒有,請注意您允許互聯網上的任何人啓動此過程,這可能會導致拒絕服務攻擊或其他安全問題。
+0

我的控制器向數據庫插入一些信息,curl不顯示錯誤,但只有當我在瀏覽器上運行控制器direclty時,插入纔會發生。不需要授權。 – VictorC 2009-09-11 00:18:38

+0

'curl'不顯示錯誤;它顯示控制器產生的輸出嗎? (如果有的話,就是說,如果沒有的話,你可能需要暫時添加一些用於調試的功能)。比如,如果你使用'curl http:// www.google.com /',你會發現' curl'應該顯示檢索到的網頁的內容。 – chaos 2009-09-11 01:11:56

0

只需製作一個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; 

?> 
+1

假定'allow_url_fopen'已打開,通常關閉。使用PHP的CURL代替....哦,哎呀,你最終使用CURL;) – Christian 2010-11-24 23:16:55

0

@seth - 我不是在Linux中,從而不能真正測試了這一點,但你的問題是,無論是捲曲本身沒有安裝捲曲需要某些特定的交換機工作

如果您仍然希望它能夠正常工作,請先通過服務器的SSH(在Windows上使用Putty)或通過編寫腳本來測試它;

<?php 
    $code=system('curl --help'); 
    echo '<br><br> Exit Code: '.$code; 
?> 

不是說如果它寫入的任何其他錯誤代碼都不是0,那麼您的CURL有問題。


另一方面,您可以使用wget來代替。它在Linux上比CURL(afaik)更受支持。儘管我是CURL的忠實粉絲,但恰巧wget在這類作品中更受歡迎。

1

或者......你可以只寫一個旨在在命令行直接運行和分配的cron任務到PHP文件中的PHP腳本:

php -f /path/to/my/file.php 

繼承人some information使用的CLI PHP。 CodeIgniter有ways to do this

也就是說,有一種方法可以確定請求是否在任何地方。(除了保存請求的輸出外)CodeIgniter配備了出色的日誌記錄方法。您可以將$config['log_threshold']設置爲application/config/config.php,如3。在瀏覽器中運行請求,然後在CLI中運行一次。然後在您的應用程序/日誌文件夾中查找當天的日誌文件。在文件中查找您請求的網址。應該有兩個地方登錄。如果少於您在日誌文件中發出的請求數量,那麼您知道CURL有問題。否則,你知道應用程序出了問題。