销售团队发送了100个请求1的内部肥皂信息。同时发送这种类型的散装Ooutbound消息请求我的PHP script完成执行,但SF无法接受的ACK用于清楚的信息队列在销售团队方面的事情。找出消息记录(监测)我看到所有消息在待发状态的交货失败的原因"java。网。SocketTimeoutException:阅读时"。如果我的剧本已经完成的执行,为什么我会得到这个错误?

我已经尝试过这些方法来增加执行的时间我的服务器上,因为我没有接上销售团队的一面:

  • set_time_limit(0);//脚本
  • max_execution_time=360;最大的执行时间每个剧本,在几秒钟内
  • max_input_time=360;最大量的时间,每个脚本可花析数据的请求
  • memory_limit=32米;最大量的存储器可能会消耗一个脚本

我用高的设置,只是为了测试。

任何想法为什么这种失败的ACK送回Salesforce?

这里是一些代码:这是我接受和发送ACK文件imcoming肥皂请求

$data = 'php://input';
$content = file_get_contents($data);

if($content) {
    respond('true');
} else {
    respond('false');
}

在应对功能

function respond($tf) {
    $ACK = <<<ACK
<?xml version = "1.0" encoding = "utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <notifications xmlns="http://soap.sforce.com/2005/09/outbound">
            <Ack>$tf</Ack>
        </notifications>
    </soapenv:Body>
</soapenv:Envelope>
ACK;

    print trim($ACK); 
}

这些是在一个通用脚本,包括到脚本中使用的数据对特定工作流程。我可以处理有关25的请求(这是在1肥皂响应),但有一次,我走过去,我得到超时的错误在销售团队的队列。50请求通常需要我的PHP script86.77秒钟。

它可能是Apache?PHP?

我们还测试了接受100请求肥皂响应,只是接受和发送确认队列中清除出来,所以我知道这是在我这一边的事情。

我没有显示出错误的apache日志的运行脚的罚款。

我找到一些信息,在销售团队的网站,但仍未成功。这里是 链接.

我也使用PHP工具包11(chatter).

其他论坛有好SF帮助

谢谢你的任何深入了解这一点, --菲尔

更新:

如果我收到进入的信息和打印的响应,这应该发生第一次不管我做什么之后?或者它不会等待我处理完成然后打印的反应?

更新#2:

好吧我觉得我有问题:PHP使用单线处理办法,并不会送回来的ACK文件,直到线已经完成了它的处理。是否有办法使这一辑阵线的过程?线#1-接受进入的肥皂请求,并送回ACK 线#2-进程的肥皂请求

我知道我能打破它就像一个数据表或平面文件,但是没有一种方法来完成这一没有这样做吗?

我要尝试关闭后插座ACK提交,并继续处理、交我的手指会的工作。

有帮助吗?

解决方案 5

所以我做了什么是:

  1. 接受所有来OBM,分析他们进入数据库
  2. 当这样做是踢过程中运行的背景(实际上是我送它到该背景,以便脚本可以结束)
  3. 送ACK文件回来的

通过只是接受的原始数据,分析入领域,并将其插入一个数据库是相当快。然后我的问题Linux的命令行命令,也发送的处理脚本运行的背景。然后我送ACK文件SF和脚本结束在规定时间内。它是麻烦的分裂脚本进程分为两个单独的阶段,但它的工作。

其他提示

听起来像站消息是击中的超时。其他用户已经报告了超时低至10秒(参见论坛的链接,下文)。沙盒实例,我用(cs1)是时间推后了大约1分钟,从我的测试。这有可能是超时是一个组织或实例级别上设置这Salesforce的控制。

两件事情你可以尝试:

  1. 打开支票 Salesforce看看他们是否能 增加的超时值 出站消息。从我的 经验,有很多 设置,他们可以上的修改 组织一级的-这个可能 他们中的一个。

  2. 卸载处理的数据,所以 这的确认立即发送 回到正确的选择。那么实际的 处理的数据将带 的地方是异步的。ie。消息 的队列,单独线,等等。

其他一些资源,可能是有帮助:

相关的Salesforce论坛的讨论

出消息文件

我认为他们的超时的事情在等着你的脚本结束。

有一个方法你可以尝试解决这个问题。

输出信封认消息开始,然后冲洗的事情,这样他们的服务器获取它的前端处理。没有纹,只是简单的优先事项重新思考:)

读这个最好的信息在冲洗的内容

你是100%肯定的销售团队将等待的时间你的脚本需要太跑?80秒看起来像一个龙的时间太我。

如果所有请求都失败了,我猜想,Salesforce希望你设置的 Content-Type 标题适当,但是这个似乎不是这种情况。

我不知道Salesforce,但是如果你想要做一些多PHP你应该看看 这个代码的例子 更确切地说, pcntl_fork().

注:pcntl是 默认和不工作上的视窗平台。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top