AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-228938

KittMedia's questions

Martin Hope
KittMedia
Asked: 2018-08-13 23:00:26 +0800 CST

如果查询字符串存在,nginx重写

  • 1

/过去,一个项目正在从/subdir. 由于旧的 URL 结构类似于/index.php?foo/123/bar我使用以下重写来获取所有内容/forum:

rewrite ^\/index\.php(.*)$ /forum/$1 last;

这种重写的问题是它还重定向/到/forum/和/index.php到/forum/. 现在我不想重定向它们,因为在/.

所以/不应该被重定向,但如果有一个查询字符串它应该。

我尝试了以下方法:

location / {
        if ($query_string !~ "") {
                rewrite ^\/index\.php(.*)$ /forum/$1 last;
        }

        try_files $uri $uri/ @rewrite;
}

开始页面现在可以工作,但如果有查询字符串,则不会重写任何内容,我不知道为什么。

nginx
  • 1 个回答
  • 3942 Views
Martin Hope
KittMedia
Asked: 2016-07-05 22:59:04 +0800 CST

使用“服务”命令初始化脚本无法正常工作

  • 1

我有以下启动脚本,它应该以分离模式启动或停止屏幕:

#!/bin/sh

# node2
# Maintainer: @KittBlog
# Authors: [email protected]

### BEGIN INIT INFO
# Provides:          node2
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: node2 in screen detached mode
# Description:       node2 in screen detached mode
# chkconfig: - 85 14
### END INIT INFO
NODE_NAME=node2
SCREEN=$(which screen)
SCRIPT_PATH=/home/jail/

do_start() {
    if !($SCREEN -r | grep -o "[0-9]*\.$NODE_NAME"); then
        $SCREEN -S $NODE_NAME -d -m $SCRIPT_PATH/start-npm.sh
    fi
}

do_stop() {
    for session in $($SCREEN -r | grep -o "[0-9]*\.$NODE_NAME"); do
        $SCREEN -S "${session}" -X quit
    done
}

case "$1" in
    start|stop)
        do_$1
        ;;
    restart)
        do_stop
        do_start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac
exit 0

如果我手动启动脚本或通过调用/etc/init.d/node2 {start|stop|restart}.

除了 if 子句被忽略之外, using 也可以service node2 start正常工作,因此即使已经有一个新屏幕,也总是会分离一个新屏幕。

问题是那service node2 stop行不通。我知道service在“可预测的环境”中运行脚本。这里有问题吗?我不能使用$SCREEN -r | grep -o "[0-9]*\.$NODE_NAME"来确定此环境中是否已经存在活动屏幕吗?

service gnu-screen upstart
  • 1 个回答
  • 462 Views
Martin Hope
KittMedia
Asked: 2015-10-23 10:31:52 +0800 CST

PHP OPcache 正在自动重置缓存

  • 4

我开始使用 PHP 5.6 的内置 PHP OPcache,现在遇到了问题。我将它设置为最多使用 1 GB 的 RAM,这对于我的网站来说已经足够了,但它永远无法使用完整的 1 GB 的 RAM。缓存在分配此限制之前已被清除多次,如您在此 munin 图上所见:

在此处输入图像描述 在此处输入图像描述

所以每隔几天它就会从缓存中删除所有文件并重新开始缓存它们。

首先,我认为问题出在变量上opcache.max_wasted_percentage,但它并不关心我设置了哪个值。我的配置如下:

; configuration for php ZendOpcache module
; priority=05
zend_extension=opcache.so
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 1024
opcache.interned_strings_buffer = 128
opcache.blacklist_filename = /etc/php5/opcache_blacklist.txt
opcache.max_accelerated_files = 65407
opcache.revalidate_freq = 5
opcache.fast_shutdown = 1
opcache.max_wasted_percentage = 50
opcache.enable_file_override = 1

我在带有 nginx 和 FastCGI 的最新 Debian Jessie 环境中使用它。

我想实现只有在内存消耗达到 1 GB 时才会清除缓存。我已经尝试了一个非常小的配置,如下所示:

; configuration for php ZendOpcache module
; priority=05
zend_extension=opcache.so
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 1024

即使这样,问题仍然存在。

如果需要 FPM 配置:

user = www
group = www
listen = 127.0.0.1:9002
listen.owner = www
listen.group = www

listen.allowed_clients = 127.0.0.1
pm = ondemand
pm.max_children = 100
pm.process_idle_timeout = 5s;

php.ini:

[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
allow_call_time_pass_reference = Off
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions = escapeshellcmd, exec, ini_restore, passthru, popen, proc_nice, proc_open, shell_exec, show_source, system
disable_classes =
zend.enable_gc = On
expose_php = Off
max_execution_time = 120
max_input_time = 300
memory_limit = 512M
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
error_log = /var/log/nginx/php_error.log
variables_order = "GPCS"
request_order = "GP"
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 2000M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
enable_dl = Off
cgi.fix_pathinfo = 0
file_uploads = On
upload_max_filesize = 200M
max_file_uploads = 200
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60

希望我能在这里找到任何已经面临这个问题并且可以解决它的人。所以我的最后一个问题是:如何配置 OpCache 以便在可用内存已满时将其清除?

php
  • 2 个回答
  • 3124 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve