小编Joh*_*han的帖子

PHP CLI进程在退出时永远挂起

我有一个PHP脚本,我在命令行上运行,当脚本应该退出时,它只是永远挂起.它发生在Windows和Linux上,因此它与操作系统无关.

我已经尝试用XDebug调试代码,踩到最后的exit声明(尝试过die没有运气).在对某些对象运行几个析构函数之后,没有什么可以逐步完成的,并且该过程只是永远等待.它没有做任何事情,没有消耗任何资源.让进程退出的唯一方法是杀死它,例如Ctrl+C

它并没有发生在我的所有脚本中,但我有一个案例,我可以重现.我不确定它是否在我的代码,库代码(主要是Symfony,Doctrince等)或PHP本身.

我已经使用了脚本strace,输出的结尾附在下面.我不知道如何调试此输出,但似乎PHP正在查询最后一个语句中的内容.

我该如何进一步调试?任何帮助,将不胜感激.

strace输出:

fstat(12, {st_mode=S_IFREG|0777, st_size=1314, ...}) = 0
fstat(12, {st_mode=S_IFREG|0777, st_size=1314, ...}) = 0
fstat(12, {st_mode=S_IFREG|0777, st_size=1314, ...}) = 0
fstat(12, {st_mode=S_IFREG|0777, st_size=1314, ...}) = 0
mmap(NULL, 1314, PROT_READ, MAP_SHARED, 12, 0) = 0x7fb8b969c000
munmap(0x7fb8b969c000, 1314)            = 0
close(12)                               = 0
umask(022)                              = 022
close(3)                                = 0
close(4)                                = 0
write(11, "\1\0\0\0\1", 5)              = 5
shutdown(11, SHUT_RDWR)                 = 0
close(11)                               = 0
write(6, "\1\0\0\0\0\0\0\0", 8)         = 8
close(2)                                = …
Run Code Online (Sandbox Code Playgroud)

php command-line-interface zeromq strace

3
推荐指数
1
解决办法
882
查看次数

如何让XSLT在Java中返回UTF-8

我正在尝试让我的XSL脚本使用UTF-8编码.像åäö和希腊字符这样的人物就像垃圾一样.让它工作的唯一方法是将结果写入文件.如果我将它写入输出流,它只返回垃圾(System.out工作,但这可能是因为它的重定向到文件).

结果需要从servlet返回,请注意它不是servlet配置问题.我可以从servlet返回带有希腊字符的硬编码字符串,它工作正常,所以这是转换的问题.

这是我目前的(简化)代码.

protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException,
IOException {
    try {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");

        final TransformerFactory factory = this.getFactory();

        final File inFile = new File("infile.xml");
        final File xslFile = new File("template.xsl");
        final File outFile = new File("outfile.html");

        final Templates templates = factory.newTemplates(new StreamSource(xslFile));
        final Transformer transformer = templates.newTransformer();
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

        final InputStream in = new FileInputStream(inFile);
        final StreamSource source = new StreamSource(in);

        final StreamResult result1 = new StreamResult(outFile);
        final StreamResult result2 = new StreamResult(System.out); …
Run Code Online (Sandbox Code Playgroud)

java xml xslt encoding utf-8

2
推荐指数
1
解决办法
3706
查看次数

标签 统计

command-line-interface ×1

encoding ×1

java ×1

php ×1

strace ×1

utf-8 ×1

xml ×1

xslt ×1

zeromq ×1