由于这篇文章多年来引起了很多关注,我在本文的最后列出了每个平台的顶级解决方案.
原帖:
我希望我的node.js服务器在后台运行,即:当我关闭终端时,我希望我的服务器继续运行.我已经用Google搜索了这个教程,但它没有按预期工作.因此,我没有使用该守护进程脚本,而是认为我只使用了输出重定向(2>&1 >> file部分),但这也没有退出 - 我的终端中出现一个空行,就像是在等待输出/错误.
我也尝试将该过程放在后台,但是一旦我关闭终端,该过程也会被杀死.
那么当我关闭本地计算机时,如何让它保持运行?
最佳方案:
首先,我在发布这个问题之前做过一些研究,所以我知道P3P政策和MSDN的相关文章.据我所知,这项政策主要(如果不是)适用于IE6.我的具体问题是IE9.此外,我做的第一件事就是建立一个策略(它有效,因为它在IE的隐私报告中显示了摘要).
我的测试用例如下:我有一个包含iframe的页面.iframe文档Set-Cookie:sid=2b5540e0e4f27075ca4709851700137d; expires=Tue, 28-Jun-2011 07:27:41 GMT; path=/为根路径上的当前域设置会话cookie(完整的HTTP标头:),该会话cookie 在一周内到期.没有问题,这已经在生产中运行(独立,而不是在iframe中)一段时间了.
问题是:iframe文档有一些javascript首先执行一些HTTP请求(由jQuery完成),然后重定向用户(通过更改document.location属性).请求会发送cookie,但重定向不会.
我已经在IE中捕获了网络事件,我可以找到的两种请求之间的唯一区别是发起者:XHR由JS库完成,另一个是通过单击完成.但是我真的怀疑点击不会发送cookie.
我想知道为什么我的cookie没有发送,谷歌分析cookie被发送,所以它应该是可能的.
更新: 这绝对是一个隐私区域问题:当将IE中的隐私栏设置降低到所有时,它可以工作.其他设置都失败了.
我已经创建了一个精确的测试床:这是正在使用的实际iframe.要测试它,你必须填写荷兰邮政编码(抱歉;)),使用的占位符很好:1234 AB和1.提交后你得到一个模态,当它完成后你应该被重定向到结果页面.在IE中,重定向显示与您开始时完全相同的页面(因为没有设置cookie).
我对Symfony2 中的安全概念有基本的了解.现在我正在尝试为多域网站实现单点登录功能.
SSO概念本身相当简单:
实现域A的防火墙/身份验证可以像往常一样完成.根据我的理解,我需要:
但是我真的可以使用一些关于如何在捆绑中执行此操作的提示.如果有人能在这里帮助我,那就太好了.
另外,我还不确定如何实现OTP,或者如何比较两个会话,并确保它们都是有效的.这将在稍后发生,我需要首先使用此工作流程.
现在已经发生了好几次,情况如下:我用puppet创建/提供一个流浪盒.我工作了一段时间,几天,有时一周.在我结束的一天结束时,我要么关上MacBook上的盖子(让它进入睡眠状态),要么将其关闭.在某个时刻,vagrant up给出一个错误:
[default] Mounting shared folders...
[default] -- v-root: /vagrant
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
mkdir -p /vagrant
Run Code Online (Sandbox Code Playgroud)
此时,供应,重新加载,停止/停止都不起作用.我必须再次销毁和制造盒子,这需要花费一些时间并且变得非常烦人.
我发现这篇文章描述了这个问题,并说明一个ntp服务应该修复它.所以我已经将它添加到我的puppet配置中,但问题仍然存在.
我也在Github上发现了一个类似的问题,这是固定的,但是我运行的操作系统不同于那里描述的操作系统,所以它不是同一个问题.我确实在那里发布了我的问题,到目前为止没有回应.
调试日志保存为主旨:https://gist.github.com/pkruithof/5116426
有谁知道这个问题可能是什么,以及我如何解决它?
更新 我认为这是在Vagrant沿途的某个地方修复的,因为我现在大约6个月没有遇到过这个问题.因此,我正在结束这个问题.
我的CouchDB(生产)服务器有时会被关闭,而我却不想这样做.在检查日志时,我注意到Erlang/CouchDB(一个或另一个)发送心跳,并监测心跳.当发生超时时,服务器被残忍地杀死(couchdb -k).这几乎总是不需要的行为,绝对是在生产服务器上.
我遇到过这个问题,它说明了这个问题并且表明这主要发生在繁重的服务器负载期间,我也注意到了这一点.
我正在寻找一种解决方案来保持我的服务器运行,但要做到这一点,我需要了解更多有关此行为的信息.不幸的是,CouchDB wiki和指南都没有提供太多关于此的信息(只有更改API中的参数).
有人可以提供更多相关信息吗?
我正在尝试设置一个基本的 Nginx+SSI 示例:
Nginx 配置(只是相关部分,为简洁起见):
ssi on;
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:20m max_size=20m inactive=60m use_temp_path=off;
server {
listen 80;
server_name localhost;
location / {
proxy_cache my_cache;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_buffering on;
proxy_pass http://127.0.0.1:81;
}
}
server {
listen 81;
root /path/to/root;
location ~ ^/.+\.php {
fastcgi_pass 127.0.0.1:9000;
}
}
Run Code Online (Sandbox Code Playgroud)
ssi.php:
<?php
header('Cache-Control: public, s-maxage=5');
?>
Time: <?php echo time(); ?>
Fragment time: <!--# include virtual="/time.php" -->
Run Code Online (Sandbox Code Playgroud)
时间.php:
<?php
header('Cache-Control: no-cache');
echo time();
Run Code Online (Sandbox Code Playgroud)
包含工作得很好:
时间:1466710388 分片时间:1466710388
现在,一秒钟后,我希望页面 (ssi.php) 仍然被缓存,但time.php …
也许我只是没有看到它,但有没有其他方法来访问以前创建的会话命名空间,而不是$_SESSION直接调用?除了我真的不想这样做之外,Zend文档还建议不要这样做:
虽然$ _SESSION仍可在PHP的全局命名空间中使用,但开发人员应避免直接访问它,以便Zend_Session和Zend_Session_Namespace可以最有效和安全地提供其会话相关功能套件.
Zend_Session_Namespace类没有用于获取命名空间的静态方法,虽然namespaceGetZend_Session中现已弃用的方法指示我使用Zend_Session_Namespace#getIterator,但该方法不是静态的.
这意味着我需要使用new关键字初始化一个新的命名空间.问题是,这不包括以前设置的变量:
$ns = new Zend_Session_Namespace('foo');
$ns->foo = 'bar';
Run Code Online (Sandbox Code Playgroud)
在随后的请求中,这个:
print_R(new Zend_Session_Namespace('Foo'));
Run Code Online (Sandbox Code Playgroud)
...打印这个:
Zend_Session_Namespace Object
(
[_namespace:protected] => Foo
)
Run Code Online (Sandbox Code Playgroud)
这看起来很明显.
那么我应该如何获取以前创建的命名空间,而不使用$_SESSION['Foo']?