【发布时间】:2014-07-07 21:39:27
【问题描述】:
我有一个模型类,它有一个以文件名数组作为参数的函数。它在文件上运行foreach 并处理它们。
foreach 的第一行是$_SESSION["file_processing"] = $file;
我有一个定期调用的 js 函数,它获取 $_SESSION["file_processing"] 并将其输出到 div 中。这就是我计划向用户显示当前正在处理的文件的方式。
我的 js 函数:
function call_files_all_together() {
alert("You will start getting emails for all files. Thanks !");
var log = setInterval(function(){ProcessingFilesLog()},5000);
$("#ajax-loader-gif").html("<img src = \"/images/ajax-loader.gif\" />");
$.ajax({
type : 'POST',
url : '/query-set/create-all-files/'
}).done(function(data) {
alert(data);
clearInterval(log);
$("#ajax-loader-gif").empty();
});
}
function ProcessingFilesLog() {
console.log("get log called");
$.ajax({
type : 'POST',
url : '/query-set/file-log'
}).done(function(data){
console.log(data);
if(data != "")
$("#files-log").append(data + "<br/>");
else
console.log("empty data");
});
}
我的控制器功能如下:
public function createAllFilesAction() {
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout->disableLayout();
$qs = new Model_QuerySet;
$qs->createAllFiles();
echo "Files Sent!";
// unset($_SESSION["file_processing"]);
}
public function FileLogAction() {
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout->disableLayout();
$log = $_SESSION["file_processing"] ;
var_dump($_SESSION);
echo $log;
}
我的模型函数:
public function createAllFiles() { #all
$db = Zend_Db_Table::getDefaultAdapter();
$ex = new Model_ExcelHandling;
foreach ($this->filename as $name=>$data){
echo $name.PHP_EOL;
$_SESSION["file_processing"] = $name;
//Do my things here.
}
}
我第一次运行脚本时,在$_SESSION 数组中看不到键“file_processing”。第二次运行时,我看到$_SESSION["file_processing"] 保存了上次执行时处理的最后一个文件的值。
我似乎 $_SESSION 仅在循环结束或其他内容后才更新,我不是 100% 确定。
我会很感激任何帮助..
谢谢
【问题讨论】:
-
你在哪里调用那个模型函数,如果你也给我们看看会更好。
-
嘿 Adeel,还添加了 js 和控制器功能 .. :)
-
你应该展示的是执行操作的模型类,而不是js代码。
-
哈哈,也做到了..谢谢
标签: php jquery session zend-framework