有沒有辦法讓腳本可以做到像$this->EE->db
這樣的東西(即使用Expression Engine的類,例如訪問數據庫),但可以在命令行中運行?使用表達式引擎的獨立PHP腳本
我試過搜索它,但文檔似乎沒有包含此信息(請correct me if I'm wrong)。我使用EE 2.4(上面的鏈接應該指向2.4文檔)。
有沒有辦法讓腳本可以做到像$this->EE->db
這樣的東西(即使用Expression Engine的類,例如訪問數據庫),但可以在命令行中運行?使用表達式引擎的獨立PHP腳本
我試過搜索它,但文檔似乎沒有包含此信息(請correct me if I'm wrong)。我使用EE 2.4(上面的鏈接應該指向2.4文檔)。
下面的文章似乎有一種可能的方法:Bootstrapping EE for CLI Access
- 複製你的index.php文件,並將其命名爲cli.php。
- 將index.php文件移到您的DOCUMENT_ROOT之外。從技術上講,這並不是必需的,但是沒有理由要盯着你的努力工作,所以爲什麼不保護它。
- 在cli.php裏面更新第26行的$ system_path指向你的系統文件夾。
- 在cli.php裏面,將第96行的$ routing ['controller']更新爲cli。
- 在cli.php裏面,將第96行的APPPATH更新爲$ system_path.'cli /'。
- 複製system/expressionengine目錄並將其命名爲system/cli。
- 複製cli/controllers/ee.php文件並將其命名爲cli/controllers/cli.php。
- 最後,將cli/controllers/cli.php中的類名更新爲Cli並刪除這些方法。
- 默認情況下,EE調用索引方法,因此請添加一個索引方法來執行您所需的操作。
@Zenbuman這是爲出發點有用的,雖然我想補充我和我所有的要求去CLI問題 - >指數,而我想一些去CLI-> TASK1,CLI- > task2 etc
我必須更新* system \ codeigniter \ system \ core \ URI.php *以便它知道如何提取我通過命令行傳遞的參數,我從下面的代碼中獲得了代碼支持CLI的Codeigniter的更新版本
// Is the request coming from the command line?
if (php_sapi_name() == 'cli' or defined('STDIN'))
{
$this->_set_uri_string($this->_parse_cli_args());
return;
}
// Let's try the REQUEST_URI first, this will work in most situations
而且在同一個文件
private function _parse_cli_args()
{
$args = array_slice($_SERVER['argv'], 1);
return $args ? '/' . implode('/', $args) : '';
}
也不得不註釋掉我cli.php文件中的以下所有路由是要索引方法在我的CLI控制器和無視我的參數創建功能
/*
* ~ line 109 - 111 /cli.php
* ---------------------------------------------------------------
* Disable all routing, send everything to the frontend
* ---------------------------------------------------------------
*/
$routing['directory'] = '';
$routing['controller'] = 'cli';
//$routing['function'] = '';
即使離開
$routing['function'] = '';
將強制要求去索引控制器
最後我覺得這有點不好意思,但我真的需要在我的情況下使用EE API庫。否則,我會只用Codeigniter創建一個單獨的應用程序來處理我的CLI需求,希望以上可以幫助其他人。
我發現@ Zenbuman的答案解決了我自己的這個問題的變化。我的示例允許您將cron腳本保留在模塊中,因此如果您需要您的模塊具有cron功能,則它們都保持整齊打包在一起。 Here's a detailed guide on my blog。
真的有用!我在這裏列出了重要的部分以供將來參考(最好這樣做,而不是僅僅鏈接到可能存在或可能不存在的URL)。歡迎來到SO! – cambraca 2012-07-20 14:36:15