小编gal*_*hen的帖子

列出Apache Tomcat中部署的Web应用程序

我需要在Apache Tomcat中获取已部署的Web应用程序列表.此外,对于每个webapp,我需要获取初始化的servlet和JSP列表.有什么想法可以做到这一点?

我发现该目录\tomcat\work\Catalina\localhost\包含每个webapp的子目录.是否有任何其他部署的Web应用程序不存在?

java tomcat

27
推荐指数
4
解决办法
4万
查看次数

PHP7 cli vs php-fpm

我用php-fpm和cron任务运行php在nginx后面到php二进制文件(/ usr/bin/php).

我发现了一个不一致 - 当我通过php二进制文件和通过fpm运行它时,相同的脚本会输出不同的结果.

注意这仅适用于PHP7.在另一台服务器上,我用5.6测试了它,结果是一样的.

这是我发现的.以下脚本:

<?php
class Test {
    public function test(){
        $arr = (object) [
            'children' => []
        ];
        $arr->children[] = 1;
        return $arr;
    }
}

$o = new Test();
$o->test();
print_r( $o->test() );
Run Code Online (Sandbox Code Playgroud)

保存到test.php.当我通过浏览器(php-fpm)运行它时,会产生:

stdClass Object
(
    [children] => Array
        (
            [0] => 1
        )
)
Run Code Online (Sandbox Code Playgroud)

但是当我从CLI执行它时,结果是不同的:

[root@server1 web]# php -f test.php
stdClass Object
(
    [children] => Array
        (
            [0] => 1
            [1] => 1
        )
)
Run Code Online (Sandbox Code Playgroud)

没有(对象)强制转换就不会发生这种情况.另外,如果我要实例$arrnew …

php php-7

11
推荐指数
1
解决办法
2851
查看次数

PHP中的Soap-base64binary数据

我在PHP中有一个SOAP客户端,它调用WSDL服务.其中一个函数返回base64binary数据.我一直试图解码它没有任何运气.

base64_decode($ encoded_base64data)将无效.我尝试使用带有各种参数的base_convert()和mv_convert_encoding(),但无法获得正确的结果.

编码结果数据以:

??`I?%&/m?{J?J??t??`$?@???????iG#)?*??eVe]f@????{????{????;?N'????\fdl??J??!????~|?"
Run Code Online (Sandbox Code Playgroud)

(数据更长,这只是字符串的一小部分)

知道如何做到这一点?

谢谢

编辑

我使用新的__doRequest()方法扩展了SoapClient,以检查接收到的数据是否是正确的base64字符串.我得到了一个合适的base64编码字符串,上面显示的结果是解码后的响应.

无论如何,字符串由SoapClient自动从base64解码为二进制(如@hakre建议的那样),所以我只需要处理二进制响应.

现在我需要的是将二进制字符串解码成看似可读的格式.最终的回复应该包含格鲁吉亚的输出,所以我试图找出原始的编码(但这是一个不同的问题).

php base64 encoding soap wsdl

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

codeigniter 邮件与 swiftmailer 批量发送电子邮件

我有一个旧系统和一个正在开发的新系统:

在旧系统中,我使用 crontab 和 swiftmailer 发送新闻通讯。我编写了一个 PHP 脚本,它从数据库中读取邮件列表,并使用 swiftmailer+smtp 将电子邮件发送到整个列表,每组电子邮件之间有延迟,以确保我不会使服务器超载(swift mailer 在 Swift_Plugins_AntiFloodPlugin 下有此脚本) )。

我还编写了另一个脚本,该脚本将扫描我发送的地址以查找传入电子邮件,查找失败通知等,并匹配地址以清除数据库中不活动的电子邮件(即,如果您将电子邮件发送到不活动的地址)不存在,您收到一封带有错误消息的邮件,我从内容中提取了地址并将其从数据库中删除)。

这种方法每天处理超过 40K 封电子邮件。就像魅力一样。

在我正在编写的新系统中,我正在使用代码点火器。code igniter 的内置邮件功能似乎工作正常,只缺少一件事:是否可以在发送之间添加延迟?

我知道将 swiftMailer 库添加到我的 CI 项目中很简单,但在我这样做之前,可以使用 CI 邮件函数来完成此操作吗?独自的?在这种情况下添加 swift mailer 还有其他优点吗?

我知道很多人会建议使用为批量电子邮件构建的东西,但 PHP CLI 就像这种情况下的任何其他编程语言一样(我知道 mailman、majordomo 和 mailchip 等服务。我可以在 php 中使用多线程处理sysdaemons 和 mod_fork 等需要时,但这与问题无关)。

编辑:

解决了

尽管我已经添加了 swift 邮件程序(这花了几分钟), @JaredFarish 建议的Sparks似乎是解决方案,因为它是为 CI 设计的。

php codeigniter swiftmailer

5
推荐指数
0
解决办法
3458
查看次数

doctrine2和group_concat

我一直在浏览文档/谷歌,但没有找到任何解决方案.

有没有办法使用没有本机mysql的doctrine2(DQL)执行或模仿GROUP_CONCAT?

例如.:

SELECT u.id, u.name, [GROUP_CONCAT(...)] AS user_messages
FROM models\Users u
LEFT JOIN models\Messages m
GROUP BY u.id
Run Code Online (Sandbox Code Playgroud)

要得到

GROUP_CONCAT(m.id,'|',m.title SEPARATOR ':')
Run Code Online (Sandbox Code Playgroud)

现在我正在使用createNativeQuery()来运行它,但我正在寻找一个doctrine2解决方案.

提前致谢

php mysql group-concat doctrine-orm

4
推荐指数
1
解决办法
5798
查看次数

div中的AngularJS提前输入搜索结果

我正在为文本输入使用bootstrap的快速输入功能,该输入还具有一个弹出流行结果弹出框的按钮。

我想要预先输入功能,只是结果列表将显示在不同的div中(在弹出框内而不是在文本输入下)。

有没有办法为预搜索结果设置“容器”?(例如,弹出式窗口小部件包含“容器”选项)

像这样:

Text Field    Button          popover
________________________________________________________
|   Search...  | B |  Typeahead1    Popular Searches:  |
|--------------|---|  Typeahead2    Src1               |
                   |  Typeahead3    Src2               |
                   |  ....          ...                |
                   |___________________________________|
Run Code Online (Sandbox Code Playgroud)

(本来可以更快地在Photoshop中绘制,但是……)

有什么好的解决方案的想法吗?我考虑了几种方法:修改/扩展typeahead插件或使用隐藏的文本输入。我可以代替jquery的自动完成功能。还有其他(更好的)建议吗?

注意:我正在使用jquery + angularjs + bootstrap

javascript jquery angularjs bootstrap-typeahead

4
推荐指数
1
解决办法
2435
查看次数

在分叉的子代上调用rand/mt_rand会产生相同的结果

我正在编写一个需要在PHP中执行并发任务的脚本.

我跑了一点测试,遇到了奇怪的结果.我正在使用pcntl_fork生成一个孩子.父进程只会等待孩子完成.

我正在生成5个孩子,每个孩子都运行一个函数,生成一个随机数(秒)并且睡了那么长时间.出于某种原因 - 所有孩子都生成相同的数字.

这是一个代码示例:

private $_child_count = 0;

private function _fork_and_exec($func)
{
    $cid = ++$this->_child_count;
    $pid = pcntl_fork();
    if ($pid){  // parent
        return $pid;
    } else {    // child
        $func($cid);
        //pcntl_waitpid(-1, $status);
        exit;
    }
}
public function parallel_test()
{
    $func = function($id){
        echo 'child ' . $id . ' starts'."\n";
        $wait_time = mt_rand(1,4);
        echo 'sleeping for '.$wait_time."\n";
        sleep($wait_time);
        echo 'child ' . $id . ' ends'."\n";
    };
    $children = [];
    for ($i=0; $i<5; $i++){
        $children[] = $this->_fork_and_exec($func) ."\n"; …
Run Code Online (Sandbox Code Playgroud)

php random fork

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