我在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 }
这看起来不错吗?现在我如何从命令行运行?如果我从命令行运行浏览器,可以取代什么?
答案 0 :(得分:1)
如果出于任何原因,你想将它作为cron运行,并且你想维护现在的应用程序(mvc用php编写)那么你可以使用无头浏览器(例如phantomjs)来命中来自作为cron运行的bash脚本的所需URL。这有点令人费解 - 但它会做你想要的。 - 如果你想通过php保留所有内容,甚至还有一个php包 - http://jonnnnyw.github.io/php-phantomjs/
答案 1 :(得分:-1)
您无法从命令行运行js。它仅在浏览器和设置为执行它的其他环境中运行。您想要做的一切都必须用PHP或其他在命令行上运行的语言来完成。