Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过php命令行执行js函数_Javascript_Php_Codeigniter_Command Line - Fatal编程技术网

Javascript 通过php命令行执行js函数

Javascript 通过php命令行执行js函数,javascript,php,codeigniter,command-line,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(ge

我在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   }

var getUrl=,
变量提供程序\u id=,
jQuery.get(getUrl、provider\u id、console.log('googlesync successful')、'json'),

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

如果出于什么原因,您希望将其作为cron运行,并且希望保持应用程序的现状(用PHP编写的mvc),那么您可以使用无头浏览器(如phantomjs)从作为cron运行的bash脚本中点击所需的url。这有点复杂-但它可以满足你的要求。-如果您想通过php保存所有内容,甚至还有一个php包-