PHP получает данные из pubsub - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть проект pub / sub, и я хочу использовать его в своем проекте PHP, моя тема: setup: enter image description here

У меня есть сценарий php для этого, msg.php:

$file = "text.txt";

$fp = fopen($file, "w");
fwrite($fp, json_encode($_REQUEST));// tried $_POST, $_GET
fclose($fp);

Но я не могу получить от него данные, однако, кажется, что скрипт выполняется (я вижу это по измененной дате в текстовом файле).Я всегда получаю [] в text.txt, не имеет значения, если уведомления отправляются мной автоматически или вручную через опцию опубликовать сообщение .Как я могу получить данные из входящих сообщений паба / вложенных сообщений?

Решения, описанные в этом вопросе, не работают для меня Публикация в Google Cloud Platform / Sub push пустых данных POST Публикация в Google Cloud /Sub Push-сообщения - Пусто POST

Под этим подразумевается замена

fwrite($fp, json_encode($_REQUEST));

на

fwrite(json_decode(file_get_contents('php://input')_);
fwrite(json_decode($HTTP_RAW_POST_DATA));

1 Ответ

0 голосов
/ 28 ноября 2018

Функция PHP json_encode выведет эту скобку открытия и закрытия "[]", когда ей дан пустой массив.Существует две основные возможности:

  1. Возможно, что пустой массив отправляется на конечную точку из pubsub.
  2. В зависимости от версии и конфигурации PHP,содержимое запроса может не проходить через переменные $ _REQUEST, $ _POST или $ HTTP_RAW_POST_DATA.

Я рекомендую использовать функцию, подобную следующей, чтобы вывести все переменные и параметры среды, чтобы увидеть, поступают ли ожидаемые данные вPHP вообще:

function PHPInfo2File($target_file) {
      ob_start();
      phpinfo();
      $info = ob_get_contents();
      ob_end_clean();

      $fp = fopen($target_file, "w+");
      fwrite($fp, $info);
      fclose($fp);
   }

Если PHP не получает данные, проблема должна быть на уровне pubsub.

...