2012-04-07 3 views
0

Я использовал cURL для аутентификации, а затем войдите через POST в cms.PHP Необходим транзакционный sql?

Затем еще один POST, чтобы попросить cms создать новый код (например, код ваучера) и захватить csv из URL-адреса, который содержит около 70 строк на страницу.

Я могу взорвать каждую строку и получить последнюю строку для нового кода, который был сгенерирован ранее.

Мой вопрос в том, что многие запросы создаются многими клиентами, возможно ли случайно прочитать один и тот же код ваучера? Хотя 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 имеет дело с первым запросом и первым обращается к первому запросу, затем начинается второй запрос? или оба могут попросить удаленный сервер генерировать ваучер в одно и то же время? Я думал использовать базу данных, если это может быть проблемой. Btw, fgetcsv() Я считаю, что каждое поле становится массивом, а csv содержит 10 полей/строк. Я знаю, что только 2-е поле - это код, поэтому я использую explode '\ n' и получаю последнюю строку массива. – Ardeus

Смежные вопросы