小编cod*_*nny的帖子

如何使用PHP邮件从地址更改信封?

我在Linux上使用PHP和Apache,使用Sendmail.我使用PHP mail函数.该邮件被发送,但信封中Apache_user@localhostnameMAIL FROM(例如nobody@conniptin.internal)和一些远程邮件服务器拒绝这一点,因为域不存在(显然).使用mail,我可以强迫它改变信封MAIL FROM吗?

编辑:如果我在mail()函数的第四个字段中添加一个标题,它会更改From邮件正文标题中的字段,并且不会更改信封MAIL FROM.

我可以通过生成sendmail sendmail -t -odb -oi -frealname@realhost并将电子邮件内容传送给它来强制它.这是一种更好的方法吗?

是否有更好,更简单,更适合PHP的方法?

编辑:底线是我应该有RTM.谢谢你的回答,第五个参数有效,一切都很好.

php email

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

Python字典是否在重新分配时释放了所有内存?

在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)

因此,当我每次在该循环中重新分配标记时,先前赋值所使用的内存是否会在被新赋值分配之前被释放?

python

6
推荐指数
1
解决办法
603
查看次数

PHP 金钱字符串转换为整数错误

我有一个小型的金融应用程序,以 PHP 作为前端,MySQL 作为后端。我有古老的偏见,我在 MySQL 中将货币值存储为美分的整数。我的 HTML 表单允许输入美元值,例如“156.64”,我使用 PHP 将其转换为美分,然后将美分存储在数据库中。

我有一个函数可以从表单中清除美元值,并将其转换为美分。我去掉前导文本,去掉尾随文本,乘以 100 并转换为整数。最后一步是

$cents = (integer) ($dollars * 100);

这几乎适用于所有情况,除了极少数值(例如“156.64”),它始终转换为 15663 美分。为什么要这样做?

如果我这样做:

$cents = (integer) ($dollars * 100 + 0.5);

然后它始终有效。为什么我需要添加该舍入值?

另外,我对将金额存储为整数而不是浮点值的偏见,是否不再需要了?现代浮点计算能否产生足够四舍五入且准确的货币价值,足以保持 100% 准确的会计?

php casting currency

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

如何更正Subversion项目,我省略了trunk?

我有一个颠覆项目,名为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)

这样安全吗?有没有更简单的方法?也许我应该强制它,并逐个检查所有修订,删除项目,然后通过修订重新创建项目修订.

svn

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

如何在Python中获得与C的__FUNCTION__相同的功能?

在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 function

4
推荐指数
2
解决办法
2593
查看次数

需要了解Python信号和模块

我试图用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方法仍然是有效的?

python signals module

3
推荐指数
1
解决办法
5590
查看次数

标签 统计

python ×3

php ×2

casting ×1

currency ×1

email ×1

function ×1

module ×1

signals ×1

svn ×1