簡體   English   中英

通過php命令行執行js函數

[英]execute js function by php command line

我在Codeigniter工作。 我有一個book.php視圖,它帶有一個js文件frontend_book.js,在它后面運行,其中包含一個同步日歷的功能。

來自frontend_book.js的片段

googleSync: function() {
    provider_id= $('#select-provider').val();
    getUrl = GlobalVariables.baseUrl + 'google/sync/' + provider_id;
    jQuery.get(getUrl,provider_id, console.log('Google sync successful'),'json');
}

我想使用我的google.php控制器中的php函數在cron作業中獨立於視圖運行此函數,該函數執行以下操作:

public function syncallproviders() {

    //get the array of providers:
    $this->load->model('providers_model');
    $providers = $this->providers_model->get_available_providers();

    //for each providers as provider run the js googleSync
    foreach ($providers['id'] as $provider) {

        //Run googleSync where #select-provider is $provider

    }
}

這樣我就可以與

 php /mypath/index.php "google" syncallproviders

我該如何整合呢?

這是我將兩者結合在一起的最佳猜測:

<?php
    //get the array of providers:
    $this->load->model('providers_model');
    $providers = $this->providers_model->get_available_providers();

    //for each providers as provider run google sync
    foreach ($providers as $provider) { ?>  
    <script type="text/javascript">
        var getUrl=<?php echo $this->config->base_url().'/google/sync/'.$provider['id']; ?>,
        var provider_id =<?php echo $provider['id']; ?>,
        jQuery.get(getUrl,provider_id, console.log('Google sync successful'),'json'),
    </script>
<?php   }

這看起來正確嗎? 現在如何使它從命令行運行? 如果從命令行運行瀏覽器,可以代替瀏覽器嗎?

如果出於某種原因,如果您想以cron的身份運行它,並且想要維護應用程序的當前狀態(用vc編寫的vc),則可以使用無頭瀏覽器(例如phantomjs)來訪問所需的網址來自作為cron運行的bash腳本。 這有點令人費解-但卻可以滿足您的要求。 -如果您想通過php保留所有包,則甚至還有一個php包-http: //jonnnnyw.github.io/php-phantomjs/

您不能使js從命令行運行。 它僅在瀏覽器和設置為執行它的其他環境中運行。 您要做的所有事情都必須使用PHP或在命令行上運行的另一種語言來完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM