fubarblg
@fubarblg
Начинающий web-разработчик

Можно ли занести несколько значений в переменную в данном php-скрипте?

Имеется php-скрипт, публикующий записи в открытых сообществах методом wall.post.
В $group_id вносится идентификатор группы, в которой необходимо разместить запись. Возможно ли каким-то образом добавить в данную переменную несколько идентификаторов? Хотелось бы чтобы одним выполнением скрипта публиковались записи в нескольких сообществах.

Описание метода wall.post

/*
VK-API WALL.POST Отправляем запись в группу методом post, через CURL
*/
$group_id ='-1';
$token = file_get_contents('token.txt');
$api_ver = '5.74';
$text = file_get_contents('post_data.txt');
$url = sprintf('https://api.vk.com/method/wall.post?');
$ch = curl_init();
curl_setopt_array( $ch, array (
	CURLOPT_POST           => TRUE,
	CURLOPT_RETURNTRANSFER => TRUE,
	CURLOPT_SSL_VERIFYPEER => FALSE,
	CURLOPT_SSL_VERIFYHOST => FALSE,
	CURLOPT_POSTFIELDS     => array(
		"owner_id"     => $group_id,
		"from_group"   => 0,
		"message"      => $text,
		"access_token" => $token,
		"v"            => '5.74',

),
	CURLOPT_URL => $url,
));
$query = curl_exec($ch);
curl_close($ch);
if(!$query){
	printf('Ошибка. Пост не опубликован!');
	exit;
}
else{
	printf('Пост успешно опубликован!');
	exit;
}
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
wall.post() публикует единственную запись.

Для промышленных масштабов спама ускорения есть вариант с методом execute(), в который можно обернуть до 25 вызовов АПИ ВКонтакте.

Т.е. вы на сервере собираете в строку некий код, похожий на JavaScript, что-то типа:
var params = {
  "message": "Текст поста",
  "from_group": 0,
};
var out = { "result": [] };

params.owner_id = 10101; // первая группа
params.guid = 'abrakadabra';
out.result.push( API.wall.post(data));

params.owner_id = 20202; // вторая группа
params.guid = 'drugayaabrakadabra';
out.result.push( API.wall.post(data));
// ...
params.owner_id = 2500025; // 25-я группа
params.guid = 'uniqueabrakadabra';
out.result.push( API.wall.post(data));

return out;


И этот код как текст отправляете параметром code в методе execute()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Одним запросом это сделать не возможно. Owner_id должен быть целым числом, т.е. содержать всего 1 значение. Иначе выдаёт ошибку "error_msg": "One of the parameters specified was missing or invalid: owner_id not integer"

Решается с использованием нескольких запросов в цикле
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы