我在Linux上使用PHP和Apache,使用Sendmail.我使用PHP mail函数.该邮件被发送,但信封中Apache_user@localhostname的MAIL FROM(例如nobody@conniptin.internal)和一些远程邮件服务器拒绝这一点,因为域不存在(显然).使用mail,我可以强迫它改变信封MAIL FROM吗?
编辑:如果我在mail()函数的第四个字段中添加一个标题,它会更改From邮件正文标题中的字段,并且不会更改信封MAIL FROM.
我可以通过生成sendmail sendmail -t -odb -oi -frealname@realhost并将电子邮件内容传送给它来强制它.这是一种更好的方法吗?
是否有更好,更简单,更适合PHP的方法?
编辑:底线是我应该有RTM.谢谢你的回答,第五个参数有效,一切都很好.
在Python中工作.我有一个函数,它从队列中读取并根据从队列中读取的记录中的一些XML标记创建一个字典,并返回该字典.我将这个函数永远地称为循环.每次都会重新分配字典.字典以前使用的内存是否在每次重新分配时被释放,或者它是否会被孤立并最终导致内存问题?
def readq():
qtags = {}
# Omitted code to read the queue record, get XML string, DOMify it
qtags['result'] = "Success"
qtags['call_offer_time'] = get_node_value_by_name(audio_dom, 'call_offer_time')
# More omitted code to extract the rest of the tags
return qtags
while signals.sigterm_caught == False:
tags = readq()
if tags['result'] == "Empty":
time.sleep(SLEEP_TIME)
continue
# Do stuff with the tags
Run Code Online (Sandbox Code Playgroud)
因此,当我每次在该循环中重新分配标记时,先前赋值所使用的内存是否会在被新赋值分配之前被释放?
我有一个小型的金融应用程序,以 PHP 作为前端,MySQL 作为后端。我有古老的偏见,我在 MySQL 中将货币值存储为美分的整数。我的 HTML 表单允许输入美元值,例如“156.64”,我使用 PHP 将其转换为美分,然后将美分存储在数据库中。
我有一个函数可以从表单中清除美元值,并将其转换为美分。我去掉前导文本,去掉尾随文本,乘以 100 并转换为整数。最后一步是
$cents = (integer) ($dollars * 100);
这几乎适用于所有情况,除了极少数值(例如“156.64”),它始终转换为 15663 美分。为什么要这样做?
如果我这样做:
$cents = (integer) ($dollars * 100 + 0.5);
然后它始终有效。为什么我需要添加该舍入值?
另外,我对将金额存储为整数而不是浮点值的偏见,是否不再需要了?现代浮点计算能否产生足够四舍五入且准确的货币价值,足以保持 100% 准确的会计?
我有一个颠覆项目,名为inboundem.这是我的第一次,当我创建它时,我省略了主干.我需要把它变成正确的结构,如inboundem/trunk.我有另一个这样的项目,但由于没有修改,我做了svn delete然后svn import,这很好.但我有很多修改,我不想失去历史.
我做不到svn move,因为svn不会让我把项目移到自己身上.
我怀疑我需要沿着svnadmin转储/加载路径,所以我做了:
svnadmin dump /subversion/active | svndumpfilter include inboundem > inboundem.dump
Run Code Online (Sandbox Code Playgroud)
并创建了一个包含所有myboundem历史记录的转储文件.但我现在该怎么办?
我怀疑我应该svn delete删除项目,然后手动编辑转储文件并将节点路径从inboundem更改为inboundem/trunk,然后执行
svnadmin load /subversion/active < inboundem.dump
Run Code Online (Sandbox Code Playgroud)
这样安全吗?有没有更简单的方法?也许我应该强制它,并逐个检查所有修订,删除项目,然后通过修订重新创建项目修订.
在C中,我可以在这样的函数中放入一个log printf:
void xx_lock (int xx_flag)
{
printf ("%s: START with %d\n", __FUNCTION__, xx_flag);
}
Run Code Online (Sandbox Code Playgroud)
所以我可以在任何函数中复制我需要的同一行,并在日志中显示函数名称.我想在Python中使用类似的东西.但是,如果我使用
__name__
Run Code Online (Sandbox Code Playgroud)
同样,它显示模块名称,而不是函数名称.
def xxx_lock(xx_flag=0)
sys.stdout.write("%s: START with %d\n" % (__name__, xx_flag))
Run Code Online (Sandbox Code Playgroud)
是否有一些简单的构造可以在该示例中用于显示Python函数名称?要产生这样的输出:
xxx_lock: START with 1
Run Code Online (Sandbox Code Playgroud)
已编辑:已将参数添加到示例中.
我试图用Python来加快速度,尝试用它替换一些C. 我遇到了在模块之间共享数据的问题,或者更可能是我对整个事情的理解.我有一个简化的信号模块:
import sys, signal
sigterm_caught = False
def SignalHandler(signum, stackframe):
if signum == signal.SIGTERM:
sigterm_caught = True
sys.stdout.write("SIGTERM caught\n")
def SignalSetup():
signal.signal(signal.SIGTERM, SignalHandler)
Run Code Online (Sandbox Code Playgroud)
我的主代码有一个这样的循环:
signals.SignalSetup()
while signals.sigterm_caught == False:
sys.stdout.write("sigterm_caught=%s\n" % str(signals.sigterm_caught))
time.sleep(5)
Run Code Online (Sandbox Code Playgroud)
我运行它,然后终止进程,在signals.py内部获取信号,将sigterm_caught设置为True,但主进程中的循环没有看到sigterm_caught值的变化.
那么(a)我的方法是完全错误的Python方式?(b)我在尝试引用模块中的变量时做错了什么?(c)我应该以不同方式处理信号,例如提出例外吗?
另外:通过提出异常来处理信号会更好吗,还是我的旧C方法仍然是有效的?