小编tan*_*oan的帖子

如何设置更高的memory_limit,post_max_size,以及Apache/PHP中的特定脚本?

我有一个Web应用程序,将对虚拟主机的所有请求重定向到控制器,然后控制器根据URL决定要包含和运行的文件.有一个Web服务通过POST接受大型XML文件.对于应用程序,我需要memory_limit和post_max_为~32M,但接受XML的服务除外,这需要它们的限制接近1024M. ini_set('memory_limit','1024M')在脚本中工作,但不适用于post_max_size.

我似乎无法弄明白该怎么做.我正在尝试类似的东西:

<VirtualHost *:80>
ServerName test.com
DocumentRoot /var/www/test.com/html


php_admin_value include_path .:/var/www/test.com/includes:/var/www/test.com/includes/libs

php_value session.use_only_cookie 1
<Location />
    php_value memory_limit 32M
    php_value post_max_size 30M
    php_value upload_max_filesize 29M
</Location>
<Location /services/big-service>
    php_value memory_limit 1024M
    php_value post_max_size 128M
</Location>

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(.*)$
RewriteCond %{REQUEST_URI} !^/(.*)(html|gif|jpg|png|ico|css|js|dtd|swf|flv|xml)$
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^/(.*)$ /Controller.php/$1 [PT]

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

所以,使用上面的配置,如果Controller.php看起来像

<?php
echo '<pre>';
var_dump(ini_get('memory_limit'));
var_dump(ini_get('post_max_size'));
var_dump(ini_get('upload_max_filesize'));
Run Code Online (Sandbox Code Playgroud)

我将收到string(3)"32M"string(3)"30M"string(3)"29M"

如果我访问http://test.comhttp://test.com/services/big-service,但我希望看到后续网址的更高限制.

有没有人有任何解决方案,不诉诸直接通过URL使用和访问服务脚本?

php memory apache

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

优化 max() 聚合,该聚合也适用于“无行”

我有一个正在尝试针对 PostgreSQL 9.2 进行优化的查询:

select coalesce(max(id),0) as m from tbl
Run Code Online (Sandbox Code Playgroud)

它需要永远运行,所以我想我可以将其重写为

select id from tbl order by id desc limit 1
Run Code Online (Sandbox Code Playgroud)

0但如果表中没有行则需要返回。我尝试了几种 case 语句的组合,但它们似乎不起作用。有什么建议么?

计划空表:

Aggregate (cost=11.25..11.26 rows=1 width=4)
 -> Seq Scan on tbl (cost=0.00..11.00 rows=100 width=4)
Run Code Online (Sandbox Code Playgroud)

具有 1,190,000 行的表的成本为 58k,但执行计划相同。

postgresql coalesce aggregate-functions postgresql-9.2 postgresql-performance

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