我正在使用PECL ssh2模块将XML数据输出到sftp服务器。我有两个完全独立的PHP脚本,它们收集不同的数据并将输出发送到stfp服务器上的不同文件。使用相同的ssh2.sftp资源分离PHP进程
客户EXPORT:
$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)
功能需要几分钟来收集相关数据和填充它到$文档。
每个脚本按原样工作,并将正确的数据导出到正确的位置。
问题是当它们的执行仅与实际写入到sftp服务器的最后一个执行重叠时。如果我呼应了$文件变量,然后在每种情况下它们都具有相同的资源ID即ssh2.sftp://ResourceID#150/Customer/Customer.xml
和ssh2.sftp://ResourceID#150/Product/Product.xml
所以我的问题是,为什么是这两个过程相互干扰,以及如何解决呢,这样他们既可以同时运行?
不错的问题,你如何运行命令,手动或通过cron工作? –