- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 ob_start()
/ob_flush()
,希望在长时间的导入操作中给我一些进展。
这是我正在做的事情的简单概述:
<?php
ob_start ();
echo "Connecting to download Inventory file.<br>";
$conn = ftp_connect($ftp_site) or die("Could not connect");
echo "Logging into site download Inventory file.<br>";
ftp_login($conn,$ftp_username,$ftp_password) or die("Bad login credentials for ". $ftp_site);
echo "Changing directory on download Inventory file.<br>";
ftp_chdir($conn,"INV") or die("could not change directory to INV");
// connection, local, remote, type, resume
$localname = "INV"."_".date("m")."_".date('d').".csv";
echo "Downloading Inventory file to:".$localname."<br>";
ob_flush();
flush();
sleep(5);
if (ftp_get($conn,$localname,"INV.csv",FTP_ASCII))
{
echo "New Inventory File Downloaded<br>";
$datapath = $localname;
ftp_close($conn);
} else {
ftp_close($conn);
die("There was a problem downloading the Inventory file.");
}
ob_flush();
flush();
sleep(5);
$csvfile = fopen($datapath, "r"); // open csv file
$x = 1;
// skip the header line
$line = fgetcsv($csvfile);
$y = (feof($csvfile) ? 2 : 5);
while ((!$debug) ? (!feof($csvfile)) : $x <= $y) {
$x++;
$line = fgetcsv($csvfile);
// do a lot of import stuff here with $line
ob_flush();
flush();
sleep(1);
}
fclose($csvfile); // important: close the file
ob_end_clean();
但是,屏幕上根本没有任何输出。
我知道数据文件正在下载,因为我观察了它所在的目录。
我也知道导入正在进行,这意味着它在 while 循环中,因为我可以监视数据库并且正在插入记录。
关于为什么我没有将输出输出到屏幕的任何想法?
最佳答案
您还需要检查 PHP 设置
一些安装默认为 4096,一些默认为关闭
output_buffering = Off
output_buffering = 4096
同意 George 的观点,但请检查以上设置
关于php - 方法 ob_start 和 ob_flush 不起作用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837006/
使用 ob_start() 和 ob_start('ob_gzhandler') 有什么区别? 它如何影响页面速度? 最佳答案 这不会像您想象的那样影响页面速度。 ob_gzhandler是一个回调函
我正在做一些关于从 php 最小化 html 的研究。喜欢 class themeing { function render( $file, $folder ) { i
我正在使用以下代码: PHP: // Generate Guid function NewGuid() { $s = strtoupper(uniqid(rand(),true));
session_start(); ob_start(); $hasDB = false; $server = 'localhost'; $user = 'user'; $pass = 'pass';
如何停止调用 ob_start发出时回调 *_clean()电话。 ob_start(function($buffer, $phase){ // code here }, 0, PHP_OUT
我在使用 foreach() 循环循环以及在该循环内部使用 ob_start() 和 ob_get_clean() 时遇到问题。 这是我的功能: protected function renderEm
我在使用 ob_start 时遇到问题。不确定交易是什么,但我已经将其简化为最简单的测试用例......仍然无济于事。我希望此代码将“bar”输出到标准输出,但我什么也没得到,错误日志中也没有错误。
在 PHP 中,有时我会看到这个: $html = Hello world HTML; 通常我会使用 ob_start() : ob_start(); ?> Hello world Hello wor
php 文档建议我应该以 ob_end_flush() 结束每个 ob_start()。我在网站的每个页面上都使用了一个,只是为了让我可以在应用程序的任何地方使用 firephp 日志方法。 该应用程
我是否允许在我的 php 文件中有两个或多个 ob_start(); 如果是的话,结束一个 ob_start(); 并开始另一个的正确方法是什么? 最佳答案 来自手册: Output buffers
在我的网络管理区域中,我使用了非常简单的逻辑: session_start(); ob_start(); if(!isset($_SESSION['user'])){ header("Loca
我复制过来的类(class)出现问题。这不是我的课,但失败的相关部分是: class foo { function process() { ob_start( array( &$this,
我的主页有几个独立的动态部分。这些部分包括公司最近的新闻列表、站点统计面板和某些员工的在线状态。最近的新闻每月更新一次,站点统计数据每天更新一次,在线状态每分钟更新一次。我想缓存这些面板,以便在每次页
我正在使用此 php 代码将 css 文件缓存到中间自己的 CMS 中。 此代码的最大限制是我无法将参数传递给我的“压缩”函数。例如,如果我有一个 css 文件到另一个目录,图像的相对路径不会被替换
通过使用 ob_gzhandler,我们在 linux 下的浏览器(firefox 和 chrome)中得到一个非法字符错误。使用 Windows 一切都很好。 简短说明:我们在一个数组中收集一些 j
所以 ob_start() 应该捕获输出,直到另一个缓冲区函数被调用,如 ob_get_clean(), ob_get_contents(), ob_get_flush()。 但是当缓冲区读取器中抛出
我希望 ob_start() 不让 echo 的输出到它们的正常目的地,而是只记录它们的内容。但它似乎并没有这样做。有任何想法吗?这是我的代码:
我不知道为什么,但这段代码在一个月前对我有用......也许我升级了 php 但不记得了。用 PHP 5.2.17 和 5.3.6 试过这个 为什么不能在 ob_start 函数的回调中使用类对象?
ob_get_contents(); ob_end_clean(); ob_start() 使用ob_start()把输出那同输出到缓冲区,而不是到浏览器。 然后用ob_get_contents得
使用 PHP 的 ob_start($callback),您可以将静态方法作为回调传递,如下所示: class TemplateRenderer { function myCallback($bu
我是一名优秀的程序员,十分优秀!