我正在使用 PECL ssh2 模块将 XML 数据输出到 sftp 服务器。我有两个完全独立的 PHP 脚本,它们收集不同的数据并将输出发送到 stfp 服务器上的不同文件。
客户出口:
$conn = ssh2_connect(SFTP_SERVER, SFTP_PORT);
ssh2_auth_password($conn, SFTP_USER, SFTP_PWD);
$sftp = ssh2_sftp($conn);
$file = 'ssh2.sftp://' . $sftp . CUSTOMER_EXPORT_PATH . CUSTOMER_EXPORT_FILENAME;
$doc = new DOMDocument('1.0','UTF-8');
CustomerExportXML($doc);
if (file_exists($file)) {
unlink($file);
}
$bytes_saved = $doc->save($file);
产品出口:
$conn = ssh2_connect(SFTP_SERVER, SFTP_PORT);
ssh2_auth_password($conn, SFTP_USER, SFTP_PWD);
$sftp = ssh2_sftp($conn);
$file = 'ssh2.sftp://' . $sftp . PRODUCT_EXPORT_PATH . PRODUCT_EXPORT_FILENAME;
$doc = new DOMDocument('1.0','UTF-8');
ProductExportXML($doc);
if (file_exists($file)) {
unlink($file);
}
$bytes_saved = $doc->save($file);
在每种情况下,该XxxExportXML($doc)
函数都需要几分钟来收集相关数据并将其填充到 $doc 中。
每个脚本都按原样工作并将正确的数据导出到正确的位置。
问题是当它们的执行重叠时,只有最后一个执行的实际写入 sftp 服务器。如果我回显 $file 变量,那么在每种情况下它们都具有相同的资源 ID ssh2.sftp://ResourceID#150/Customer/Customer.xml
,即ssh2.sftp://ResourceID#150/Product/Product.xml
所以我的问题是为什么这两个进程会相互干扰,我该如何修复它以便它们可以同时运行?