最近,我开始将ElasticSearch(ES)实现用于使用MySQL用PHP编写的遗留电子商务应用程序.我对所有这些东西都是全新的,阅读文档很好,但我真的需要有经验的人来建议我.
从ES文档我能够设置一个新的集群,我还发现河流已被弃用,应该被替换,所以我用Logstash和JDBC 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中创建了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 脚本时遇到问题:
<?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 服务器配置部分: …
我的同步文件夹无法正常工作,它们在启动时会同步一次,但是当我在主机上进行更改时,vagrant不会实时同步它.
首先是我系统的一些细节:
在我们开始讨论之前,我没有使用最新版本的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同步,因为我需要跨平台就绪环境.
有关如何启用实时同步的任何想法?
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) 我在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 ×4
docker ×1
fastcgi ×1
fpm ×1
linux ×1
logstash ×1
monolog ×1
mysql ×1
nginx ×1
node.js ×1
npm ×1
performance ×1
soap ×1
timeout ×1
vagrant ×1
vagrantfile ×1
virtualbox ×1
web-services ×1
wsdl ×1