2012-08-31 48 views
0

我正在使用Php和Salesforce WSDL API。PHP等待WSDL(Salesforce)過程完成

我現在正在做的事情是一個PHP頁面。

  1. 通過WSDL向Salesforce創建通知,並讓它返回一個Id。
  2. 使用創建編號分配給一個變量,以便它可以通過WSDL更新記錄到Salesforce

    功能createRecord($對象,$ FieldData){// 做它的魔法通過連接到Salesforce, 返回$ Id; }

    $ newRecord = createRecord();

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

所以會發生什麼是$ newRecord是想獲得與功能createRecord價值分配,有時什麼情況是createRecord不處理速度不夠快等$ newRecord得到與NULL分配。

我能做些什麼來確保createRecord在「$ record-> contact__c」被調用之前執行完嗎?


內createRecord($對象,$ 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內點連接?

如果是這樣,在createRecord賦值給$ newRecord變量的過程中,我應該在createRecord函數內還是外部處理它?

+0

如果您的'createRecord'函數過早返回,那麼可能有助於查看它的一些代碼。 – JCD

+0

發佈了代碼片段。它不僅僅是它過早返回,它只是腳本繼續運行並將其賦值給變量中的任何內容。 – MCHam

回答

0

您應該使用exceptions,您可以使用salesforce api,因爲我注意到有時會發生HTTP錯誤,連接可能會隨機丟棄。通過這種方式,您可以測試返回的SOAP調用,並確保它們不會失敗並具有適當的值。

您應該使用SalesForce's PHP Toolkit減少已知的問題,而不是要發明代碼全部自己:https://github.com/developerforce/Force.com-Toolkit-for-PHP

如果你想插入/創建例如聯繫人/鉛對象,您使用的銷售隊伍create命令的內您的createRecord()函數使用SalesForce upsert命令會更好/更安全。

如果您需要更多幫助,那麼您需要顯示一些代碼。