хостинг — PHP Создать папку, Создать подпапку с помощью #ID и Загрузить файл по умолчанию?

Хорошо, поэтому я немного подумал об этом, но я действительно не хотел начинать, не зная, как я собираюсь это сделать …

Я буду предоставлять базовый автоматический хостинг на своей учетной записи хостинга, где, как пользователь будет проверять сайт, оплачивать хостинг-пакет с помощью PayPal, а IPN делает то, что делает. Это у меня уже на месте и работает. Тем не менее, как бы я набрал скрипт, который будет автоматически после оплаты — создать папку, используя NEXT AUTO_INCREMENT #ID номер в скажем таблице WebDesign_HostingAccounts, Таким образом, если следующий идентификатор, который будет использоваться, скажем, # 0005, папка будет называться «0005», и в этой папке автоматически добавится подпапка Public_HTML и загрузится страница Welcome.PHP.

Я знаю, что это будет связано со следующими клипами:

<?php
// Desired folder structure
$structure = './depth1/depth2/depth3/';

// To create the nested structure, the $recursive parameter
// to mkdir() must be specified.

if (!mkdir($structure, 0777, true)) {
die('Failed to create folders...');
}
// ...
?>

Но как мне добавить это в MySQL Query, чтобы проверить следующий идентификатор, а затем загрузить страницу приветствия?

Любые базовые сценарии будут очень полезны! Спасибо!

0

Решение

Я возвращался к своим предыдущим фриланс-проектам, которые я нашел по своему опыту как плохую практику.

Давайте сначала пропустим части public_html и Welcome.php …

Вот часть «сценария»

То, что вы пытаетесь сделать, это:

  1. Сначала PHP (пытаясь определить следующий идентификатор AUTO_INCREMENT и создать папку на основе этого «следующего» идентификатора auto_increment)
  2. Затем вы выполняете команды INSERT в своей базе данных MySQL.

Теперь вот вопрос: Что делать, если у вас есть 2 клиента и запросили один и тот же запрос одновременно?

Клиент 1 ожидает, что следующий идентификатор auto_increment равен 2

Клиент 2 также ожидает, что следующий идентификатор auto_increment равен 2 (а не 3, потому что еще нет строки из базы данных с 2 как его основной идентификатор, поэтому он также должен получить 2).

Эпическая часть, если Клиент 2 сделал это первым, чтобы закончить свой запрос. Я уверен, что Клиент 1 скоро также завершит свой процесс и попытается создать папку на основе идентификатора AUTO_INCREMENT, но уже существует папка для идентификатора на основе AUTO_INCREMENT. Есть часть избыточности. Эпично, провал.

А вот и главное событие «Решение»

Давайте сделаем это по-другому,

  1. Вы выполняете команду INSERT в базе данных MySQL, я предлагаю вам использовать процесс на основе транзакций.
  2. Затем PHP создаст папку с именем на основе результирующего идентификатора AUTO_INCREMENT из недавно вставленной строки.

Что за черт? Как получить идентификатор AUTO_INCREMENT из недавно вставленной строки? «

Используйте LAST_INSERT_ID (), встроенную функцию в MySQL, чтобы получить идентификатор AUTO_INCREMENT из последней вставленной строки (что, я полагаю) из последней таблицы, в которую вы вставили определенную строку.
Теперь вот часть чтения относительно этой вещи LAST_INSERT_ID ():

Будет ли возникать конфликт, если другие клиенты также вставят строку в эту таблицу?

Нет, потому что у каждого клиента есть свои отдельные сессии. Это означает, что он возвращает идентификатор автоинкремента только из последней вставленной строки текущего клиента, а не по глобальной ссылке. (Ура для движка MySQL!)

Предупреждение Multi-Insert Query

LAST_INSERT_ID () возвращает идентификатор первой вставленной строки, если вы когда-нибудь задумывались об использовании запроса с несколькими вставками:

INSERT INTO mytable(name, age)
VALUES
("Mark Hernandez", 25),
("Allen Linatoc", 20)
;

Он вернет только идентификатор вставки первый строка, указанная в запросе с несколькими вставками.

Вы можете сделать это быстрее с PHP mysql_insert_id,
Я не знаю, какую абстракцию / расширение базы данных (PDO, MySQL, MySQLi) вы используете, но вот пример из собственного расширения PHP MySQL: http://php.net/manual/en/function.mysql-insert-id.php

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

Во всяком случае, с вашей стороны говорят:

и в этой папке автоматически добавьте подпапку Public_HTML и загрузите страницу Welcome.PHP.

  • Я думаю, что файл welcome.php должен быть заданием для вашего сервиса;)
  • public_html? Обратите внимание на материал chmod, вы знаете, что такое разрешение файловой системы. Безопасность всегда должна быть на первом месте.
    Разрешения файловой системы — это просто еще одна тема. Вам нужно поднять еще один вопрос для этого.

Я надеюсь, что помог вам разобраться.
Теперь давайте передадим исправление экспертам ^ _ ^

Хорошего дня!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]