我希望能够在命令行上用简单的PHP脚本显示进度表.而不是看到
Progress: 0%
Progress: 1%
etc...
Run Code Online (Sandbox Code Playgroud)
我只想更改数字,并替换以前的数字,就像git clone那样Resolving deltas: 100% (8522/8522), done.
.
在搜索这个时,我发现在Perl中回答了同样的问题,这是完美的,但我在PHP中找不到它.可能吗?如果没有,我会诉诸C.
谢谢
更新:如果有人对C++版本感兴趣,它就在这里.
我在perl中有以下两行:
print "Warning: this will overwrite existing files. Continue? [y/N]: \n";
my $input = <STDIN>;
Run Code Online (Sandbox Code Playgroud)
问题是在perl脚本暂停输入之前,打印行没有执行.也就是说,perl脚本似乎无缘无故地无缘无故地停止.我猜测输出是以某种方式缓冲的(这就是为什么我把\n放入,但这似乎没有帮助).我对perl很新,所以我很感激有关如何解决这个问题的任何建议.
这是代码(有效的C和C++)
#include <stdio.h>
int main() {
printf("asfd");
// LINE 1
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果在第1行中我放置segfaulting表达式,程序将崩溃而不打印任何东西(如预期的那样).
但是为什么上面的代码打印"asdf"并且在没有缓冲区的情况下不会被刷新?什么是引擎盖下的,为什么它按预期工作?
我有一堆单元测试文件,所有这些文件都由 django.test.TestCase 类组成。
自己写了一个小 shell 脚本来取消注释/注释我的 __init__.py 文件中的测试文件导入,因此我可以根据我提供的命令行参数从某些测试文件运行测试。我还能够一次性运行所有测试文件的所有测试(用于回归测试)。
我有一个包含一些 JSON 固定装置的测试文件,第一个测试检查某个模型/表中是否有 3 条记录(由 JSON 固定装置定义)。
所以问题来了:当我自己运行这个测试文件时,它的测试以优异的成绩通过,但是当我用所有其他测试运行测试时,我提到的那个特定的测试用例失败了。
当我运行所有测试时,数据库说表/模型中有 6 条记录,但应该只有 3 条(来自夹具),就像测试文件本身运行时一样。
我还尝试使用其他一些测试文件(不是全部)运行该测试文件,并且它通过了。所以唯一没有的时候,是当所有测试文件都运行时。
对我来说,这似乎是 Django 或 PostgreSQL(我正在使用的数据库)中的一个错误,因为 Django TestCases 不应该在每个测试方法之间自动刷新/重置数据库,更不用说测试类了?
#!perl6
use v6;
my $message = "\nHello!\n\nSleep\nTest\n\n";
my @a = $message.split( '' );
for @a {
sleep 0.3;
.print;
}
Run Code Online (Sandbox Code Playgroud)
Perl6默认启用"autoflush".使用perl5而不启用"outflush"我不会得到这种行为.
我正在研究一些套接字代码,无法弄清楚autoflush
套接字上使用的原因.就是这样的
my $sock = IO::Socket::Unix(Peer => $socketfilename , Type => SOCK_STREAM)
autoflush $sock 1;
Run Code Online (Sandbox Code Playgroud)
还有一些地方
autoflush STDERR 1
autoflush STDOUT 1
Run Code Online (Sandbox Code Playgroud)
对于一般filehnadles.
它有什么作用?如果我不使用它会发生或将会发生什么?请举一些实际的例子,以便我理解而不是简单的定义.
如果autoflush_log
设置为true,是否可能具有高内存利用率?
我有一个像这样的自定义生产环境(暂存)设置
require Rails.root.join("config/environments/production")
Calamus::Application.configure do
config.action_mailer.default_url_options = {:protocol => 'https', :host => xx.xx.xx.xx }
end
Run Code Online (Sandbox Code Playgroud)
这是记录 sql 语句。所以我将日志级别设置为 info
config.log_level = :info
Run Code Online (Sandbox Code Playgroud)
但是添加上面的行导致独角兽进程占用太多内存并且机器在内存上运行得非常高
当我添加这一行时
config.autoflush_log = false
Run Code Online (Sandbox Code Playgroud)
内存利用率恢复正常。任何人都可以看到连接吗?为什么会autoflushing
造成内存利用率高?
在Parrot时代,Perl 6有几个答案,它们目前似乎不起作用:
这是基于MoarVM版本2017.04-53-g66c6dda实现Perl 6.c的Rakudo版本2017.04.3.
perl6的答案默认启用"autoflush"吗?说它默认启用(但那是2011年).
这是我正在玩的一个程序:
$*ERR.say: "1. This is an error";
$*OUT.say: "2. This is standard out";
Run Code Online (Sandbox Code Playgroud)
它的输出,这是一个不幸的顺序:
2. This is standard out
1. This is an error
Run Code Online (Sandbox Code Playgroud)
所以也许我需要打开它.我怎么能禁用autoflush?提到了一种autoflush
方法:
$*ERR.autoflush = True;
$*ERR.say: "1. This is an error";
$*OUT.say: "2. This is standard out";
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
对于'IO :: Handle'类型的调用者,没有这样的方法'autoflush'
我想我可以通过让我的IO类在每次输出后刷新来自行伪造.对于它的价值而言,缺少这一功能使我无法使用Perl 6来完成今天的特定任务.
作为第二个问题,为什么Perl 6现在没有这个,特别是当它看起来像以前一样?你怎么会说Perl 5人这不是问题?
我最近有幸设置了$| = 1;
我的Perl脚本,以帮助它更快地与管道中的另一个应用程序通话.
我很好奇为什么这不是默认设置.换句话说,如果我的缓冲区直接冲洗,我会失去什么?
JPA 本质上是 JDBC 的更高抽象。EntityManager 有一个 API setAutoFlushMode。它可以设置为 AUTO 或 COMMIT。在 JDBC 术语中,这相当于什么?谢谢
我像这样使用反射来打印出System.out
对象的属性:
System.out.println("Class: " + System.out.getClass().getName());
for (Field field : ObjectUtils.getAllFields(System.out)) {
field.setAccessible(true);
System.out.println("> " + field.getType().getSimpleName() + ' ' + field.getName() + " = " + field.get(System.out));
}
Run Code Online (Sandbox Code Playgroud)
这是结果:
Class: java.io.PrintStream
> boolean autoFlush = false
> boolean trouble = false
> Formatter formatter = null
> BufferedWriter textOut = java.io.BufferedWriter@43c1b556
> OutputStreamWriter charOut = java.io.OutputStreamWriter@587e5365
> boolean closing = false
> OutputStream out = org.apache.tools.ant.util.TeeOutputStream@22fcf7ab
Run Code Online (Sandbox Code Playgroud)
如您所见,autoflush
设置为false
。所以我的问题很简单-我怎么配置System.out
已经autoflush
设置为true
?
autoflush ×12
flush ×4
perl ×3
perl6 ×3
stdout ×3
raku ×2
rakudo-star ×2
buffer ×1
c ×1
c++ ×1
command-line ×1
django ×1
django-tests ×1
io ×1
java ×1
jpa ×1
logging ×1
php ×1
printwriter ×1
production ×1
sockets ×1
system.out ×1
testcase ×1
testing ×1
unicorn ×1