Могу ли я сказать, что моя функция php не должна выполняться, пока "file_get_contents" не загрузит страницу, используя код javascript в php? - PullRequest
0 голосов
/ 27 февраля 2020

Это моя php функция:

$result = file_get_contents('https://www.example.com/index.php'); 
$regex = '/<img class="pic" src="(.*?)">/';   
preg_match($regex, $result, $matches);
 return($matches[1]);

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

1 Ответ

0 голосов
/ 27 февраля 2020

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

  1. Загрузить страницу без нужного изображения
  2. Создайте новый скрипт, который будет загружать этот URL-адрес изображения на сервер. Давайте назовем, например, fetch-image.php.
  3. Убедитесь, что ваш скрипт отобразит изображение и вернет правильный заголовок Content-Type. Образцы можно найти здесь . Для этого ваш код необходимо будет изменить, см. Ниже.
  4. Переместите упомянутый выше код в новый скрипт
  5. Замените атрибут image src="/fetch-image.php" на путь к скрипту выборки

Модифицированный скрипт:

$result = file_get_contents('https://www.example.com/index.php'); 
$regex = '/<img class="pic" src="(.*?)">/';   
preg_match($regex, $result, $matches);
echo file_get_contents($matches[1]);

Надеюсь, что поможет.

...