【问题标题】:PHP Waiting for WSDL (Salesforce) process to finishPHP 等待 WSDL (Salesforce) 进程完成
【发布时间】:2012-08-26 11:50:03
【问题描述】:

我正在将 Php 与 Salesforce WSDL API 一起使用。

我要做的是一个 PHP 页面做几件事。

  1. 通过 WSDL 创建通知到 Salesforce 并让它返回一个 ID。
  2. 使用创建的 Id 分配给变量,以便它可以通过 WSDL 将记录更新到 Salesforce

    函数 createRecord($Object, $FieldData){ //通过连接到 Salesforce 来变魔术, 返回 $Id; }

    $newRecord = createRecord();

    $record->contact__c = $newRecord; $sfConn->update(array($record), 'Campaign');

所以假设 $newRecord 从函数 createRecord 获取赋值,有时会发生 createRecord 处理速度不够快,因此 $newRecord 获取 NULL 赋值。

我能做些什么来确保 createRecord 在调用“$record->contact__c”之前完成执行?


在 createRecord($Object, $FieldData) 中是这段代码

$sfConn2 = new SforceEnterpriseClient();
$sfClient = $sfConn2->createConnection(WSDL_FILE);
$sfLogin = $sfConn2->login(SF_UN, SF_PW);

        $newRec = new stdclass();           
        foreach ($FieldData as $key => $value){
            $newRec->$key = $value;
        }

            $createResponse = $sfConn2->create(array($newRec), $Object);

            if($createResponse->success == 1){
               return $createResponse->id;  
            }else{
               return FALSE;
            }

那么最可能的罪魁祸首是createRecord中存在异常,例如drop connection?

如果是这样,在将 createRecord 分配给 $newRecord 变量期间,我应该在 createRecord 函数内还是在它之外处理?

【问题讨论】:

  • 如果您的 createRecord 函数过早返回,查看它的一些代码可能会有所帮助。
  • 发布了代码的sn-p。不仅仅是它过早返回,只是脚本只是继续运行并将其分配给变量中的任何内容。

标签: php concurrency wsdl salesforce


【解决方案1】:

您应该尽可能使用 exceptions 与 salesforce api,因为我注意到有时会发生 HTTP 错误并且连接可能会随机断开。这样您就可以测试返回的 SOAP 调用并确保它们没有失败并具有正确的值。

您应该使用SalesForce's PHP Toolkit 来减少已知问题,而不必自己编写代码:https://github.com/developerforce/Force.com-Toolkit-for-PHP

例如,如果您尝试插入/创建联系人/潜在客户对象,并且您在 createRecord() 函数中使用 sales force create 命令,那么使用 SalesForce upsert 命令会更好/更安全。

如果您需要更多帮助,那么您需要展示您的一些代码。

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 2011-11-09
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多