通过php命令行执行js函数

时间:2015-09-28 15:47:58

标签: javascript php codeigniter 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

    }
}

然后我可以使用

在cron作业中运行
 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   }

这看起来不错吗?现在我如何从命令行运行?如果我从命令行运行浏览器,可以取代什么?

2 个答案:

答案 0 :(得分:1)

如果出于任何原因,你想将它作为cron运行,并且你想维护现在的应用程序(mvc用php编写)那么你可以使用无头浏览器(例如phantomjs)来命中来自作为cron运行的bash脚本的所需URL。这有点令人费解 - 但它会做你想要的。 - 如果你想通过php保留所有内容,甚至还有一个php包 - http://jonnnnyw.github.io/php-phantomjs/

答案 1 :(得分:-1)

您无法从命令行运行js。它仅在浏览器和设置为执行它的其他环境中运行。您想要做的一切都必须用PHP或其他在命令行上运行的语言来完成。