Возможно ли, чтобы php-скрипт остановился в определенной точке и возобновил выполнение с этого момента? - PullRequest
1 голос
/ 12 сентября 2011

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

я знаю, что php-файл выполняется сверху вниз, но я хотел бы знать, есть ли способ остановить выполнение в какой-то момент, чтобы затем возобновить его в более позднем случае, или есть способ достичь определенного часть этого и затем возобновление из части, которая находится перед этим или что-то в этом роде?

я знаю, как это сделать, если я просто помещу каждый отдельный блок кода в отдельный файл php, таким образом он остановится, потому что достиг конца файла, и если что-то случится, он возобновит работу из другого файла, так что делает почти то же самое, но я хотел бы сделать сценарий php, который будет вести себя так, но содержится в 1 файле php.

мне не нужны примеры кода, мне просто нужен кивок в правильном направлении, например, имена некоторых функций или что-то, что может быть полезно для этой цели.

1 Ответ

3 голосов
/ 12 сентября 2011

Если вы пытаетесь сделать что-то на основе пользовательского ввода, вам, вероятно, следует:

  1. Структурировать вашу программу как веб-приложение так, чтобы каждый бит пользовательского ввода порождал новый запрос кстраница с блоком кода, который должен выполнить ввод, или ...
  2. Используйте язык, отличный от PHP.

Предполагая, что вы делаете # 1, это еще не всетрудно иметь конкретный параметр GET, который определяет, на каком «шаге» вы находитесь во взаимодействии - например, скажем, у вас есть последовательность "A <user input> B or C <user input> D or E".У вас может быть схема URL, которая выглядит следующим образом:

/app/code.php - this runs the code block A
/app/code.php?step=B or /app/code.php?step=C - this runs either code block B or C
/app/code.php?step=D or /app/code.php?step=E - this runs either code block D or E

, где ссылки / Javascript / все, что на обслуживаемых страницах, позволяет выбрать, какая страница загружается следующей.Ваш PHP-файл будет выглядеть примерно так:

if(!isset($_GET['step'])) {
    // code block A
} elseif($_GET['step'] == 'B') {
    // code block B
} elseif($_GET['step'] == 'C') {
    // code block C
} elseif($_GET['step'] == 'D') {
    // code block C
} elseif($_GET['step'] == 'E') {
    // code block C
} else {
    // error, invalid step specified
}

Вы также можете просто разделить шаги на разные PHP-файлы.Какой из подходов будет наилучшим, вероятно, зависит от того, насколько функциональность распределена между различными опциями и насколько она различна - если разделяется множество, один файл может быть проще;если большинство отличается, отдельные файлы, вероятно, проще.

...