2012-04-07 53 views
0

我用cURL先认证,然后通过POST登录到cms。需要PHP Transaction-like sql吗?

然后另一个POST再次要求cms生成一个新的代码编号(例如代金券代码),并从每页包含约70行的url中获取csv。

我可以爆炸每一行,并获得以前生成的新代码号的最后一行。

我的问题是,如果很多请求都是由很多客户创建的,是否可能意外读取相同的凭证代码?虽然cURL获得csv文件的速度非常快,但是我应该确保一个请求必须先于另一个完成吗?像一个SQL事务。

虽然我在某处阅读php并不是平行运行,因为我是所有这些人的初学者,并且有人问我脚本是否会导致多个请求。提前致谢。

回答

0

如果远程服务器生成相同的代码两次,您将获得相同优惠券代码的唯一方法。您在说php do not run in parallel时是正确的,但并发与您的具体情况无关,两个HTTP响应无法彼此混淆,因为它们在不同的TCP流中发回给您。操作系统的底层TCP/IP堆栈将防止冲突。

无论如何,您应该能够在收到数据后检查冲突。例如,如果将它插入到SQL数据库中,则可以在包含代码的字段上创建唯一索引,并且数据库将阻止您插入重复的行。

作为一个侧面说明,你说你can explode each line这是事实,但你不妨在fgetcsv()str_getcsv()来一看,这将解析专线为您服务,并考虑到转义序列和各种边缘案例你的代码将不会考虑。如果您想一次执行多个cURL请求,您可能还想看看curl_multi_exec(),这将允许您一次执行多个请求并加快脚本的执行速度。

+0

我担心的可能是一次远程服务器缓慢/迟缓以生成优惠券代码,其中有多个请求已完成。在这种情况下,PHP如何做,PHP处理第一个请求,并确保第一个请求返回第一个然后第二个请求开始?或者两者都可以要求远程服务器同时生成凭证?如果这可能是一个问题,我正在考虑使用数据库。顺便说一句,fgetcsv()我相信使每个领域成为一个数组和csv包含10场/线。我知道只有第二个字段是代码,这就是为什么我使用爆炸'\ n'并获得最后一个数组行。 – Ardeus 2012-04-08 03:44:29