小编Jan*_*ter的帖子

如何使用多个实体绑定设置ElasticSearch索引结构


最近,我开始将ElasticSearch(ES)实现用于使用MySQL用PHP编写的遗留电子商务应用程序.我对所有这些东西都是全新的,阅读文档很好,但我真的需要有经验的人来建议我.

从ES文档我能够设置一个新的集群,我还发现河流已被弃用,应该被替换,所以我用Logstash和JDBC MySQL连接器替换它们.

此时我有:

  • ElasticSearch
  • Logstash
  • JDBC MySQL驱动程序
  • MySQL服务器

应用程序的数据库结构并不是最佳的,并且很难替换,但我想以最佳方式将其复制到ES索引中.

数据库结构:

制品

+-------------------------------+-------+--------+
|              Id               | Title | Price  |
+-------------------------------+-------+--------+
| 00c8234d71c4e94f725cd432ebc04 | Alpha | 589,00 |
| 018357657529fef056cf396626812 | Beta  | 355,00 |
| 01a2c32ceeff0fc6b7dd4fc4302ab | Gamma | 0,00   |
+-------------------------------+-------+--------+
Run Code Online (Sandbox Code Playgroud)

+------------+-------------+
|     Id     |    Title    |
+------------+-------------+
| sellout    | Sellout     |
| discount   | Discount    |
| topproduct | Top Product |
+------------+-------------+
Run Code Online (Sandbox Code Playgroud)

flagsProducts(n:m pivot)

+------+-------------------------------+------------+------------+
|  Id  |           ProductId           |   FlagId   | ExternalId …
Run Code Online (Sandbox Code Playgroud)

php mysql data-structures elasticsearch logstash

13
推荐指数
1
解决办法
1287
查看次数

为SOAP服务器创建WSDL文件

我是整个网络服务的新手,所以我会尽可能地解释我的问题到目前为止我能理解它.

我在PHP中创建了Soap服务器:

try {
    $server = new SOAPServer(
        'webservice.wsdl',
        array(
            'uri' => 'http://example.com/soap/server.php'
        )
    );

    $server->setClass('soap');
    $server->handle();
} catch (SOAPFault $f) {
    print $f->faultstring;
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个服务器的Soap类:

class soap 
{
    public function sendOrders($sXml) 
    {        
        $oXml = new SimpleXMLElement($sXml);
        $sOrder = $oXml->children(); 
        $sResult = '';

        foreach ($sOrder as $OrderRow) {
            $sOrderNr = $OrderRow->ORDERNR;
            $sState = $OrderRow->STATE;
            $sTimestamp = $OrdeRow->TIMESTAMP;

            $oOrder = new Order;
            $oOrder->load($sOrderNr);
            if ($sState == 1) {
                $oOrder->checkStatusChange('Approved', $oOrder);
                $oOrder->{$oOrder->getCoreTableName() . '__status'} = new Field('Approved');
                $sResult .= $sOrderNr . " …
Run Code Online (Sandbox Code Playgroud)

php soap wsdl web-services

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

Nginx + Php-fpm fastcgi 上游超时

我在长时间运行的 PHP 脚本时遇到问题:

<?php
sleep(70); # extend 60s
phpinfo();
Run Code Online (Sandbox Code Playgroud)

每次504 Gateway Time-outNginx 响应 60 秒后都会终止。

当我检查 Nginx 错误时,我可以看到请求超时:

... [error] 1312#1312: *2023 upstream timed out (110: Connection timed out) while reading response header from upstream, ... , upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock", ...
Run Code Online (Sandbox Code Playgroud)

/etc/nginx/conf.d/timeout.conf我浏览了相关问题并尝试增加创建包含以下内容的文件的超时:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
fastcgi_connect_timeout 600;
Run Code Online (Sandbox Code Playgroud)

我还阅读了fastcgi核心模块的 Nginx 文档,搜索默认设置为 60 秒的任何配置。

我排除了client_*超时,因为它们返回HTTP 408而不是HTTP 504响应。

这是 FastCGI 的 Nginx 服务器配置部分: …

php timeout fastcgi nginx fpm

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

vagrant synced文件夹在virtualbox上不能实时工作

我的同步文件夹无法正常工作,它们在启动时会同步一次,但是当我在主机上进行更改时,vagrant不会实时同步它.

首先是我系统的一些细节:

  • 操作系统:Linux Mint 18 Sarah
  • Virtualbox版本:5.0.24-dfsg-0ubuntu1.16.04.1
  • Vagrant版本:1.9.0
  • vagrant-hostmanager(1.8.5)
  • 流浪汉分享(1.1.6)
  • vagrant-vbguest(0.13.0)

在我们开始讨论之前,我没有使用最新版本的Virtualbox,因为它不在存储库中而且很简单vagrant up.

我的Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "private_network", ip: "192.168.88.88"
  config.vm.hostname = "my.centos.dev"
end
Run Code Online (Sandbox Code Playgroud)

vagrant up给了我这个.

现在,当我在主机上创建一个文件时:

falnyr@mint:~/centos-vagrant $ ls
ansible  Vagrantfile
falnyr@mint:~/centos-vagrant $ touch file.txt
falnyr@mint:~/centos-vagrant $ ls
ansible  file.txt  Vagrantfile
Run Code Online (Sandbox Code Playgroud)

和客机上的ssh:

falnyr@mint:~/centos-vagrant $ vagrant ssh
[vagrant@my ~]$ ls /vagrant/
ansible  Vagrantfile
Run Code Online (Sandbox Code Playgroud)

如您所见,未创建该文件.当我执行vagrant reload同步时,在机器启动期间再次执行.

注意:我不能使用NFS同步,因为我需要跨平台就绪环境.

有关如何启用实时同步的任何想法?

linux virtualbox vagrant vagrantfile synced-folder

5
推荐指数
2
解决办法
7656
查看次数

npm install 4x slower in docker container compared to host machine

I'm trying to provision a project locally that's using NodeJs with NPM.

I'm running npm install on my host machine (MacBook Pro Retina, 15-inch, Mid 2015) using nvm with node version 10.19:

added 2335 packages from 985 contributors and audited 916010 packages in 61.736s
Run Code Online (Sandbox Code Playgroud)

When I run the same setup in Docker, the result is much slower. This is my docker-compose.yml file:

version: '3.4'
services:
  node:
    image: node:10.19-alpine
    container_name: node
    volumes:
      - .:/app/
      - npm-cache:/root/.npm
    working_dir: /app
    command: ["tail", …
Run Code Online (Sandbox Code Playgroud)

performance node.js npm docker docker-compose

5
推荐指数
1
解决办法
6078
查看次数

Monolog - 仅记录特定级别的错误

我在vanilla PHP应用程序中使用Monolog.

我想记录只有特定级别的错误 - INFO而不是上面的错误,因为我有其他处理程序.

这是我的代码:

<?php
$logger = new Logger('mylogger');
$logger->pushHandler(new StreamHandler(__DIR__.'/log/errors.log', Logger::WARNING));
$logger->pushHandler(new StreamHandler(__DIR__.'/log/info.log', Logger::INFO));
Run Code Online (Sandbox Code Playgroud)

有没有办法只记录INFO消息info.log

php monolog

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