same => n,System(echo \"Channel: OOH323/${Numbers:1:5}\\nMaxRetries: 1\\nRetryTime: 10\\nWaitTime: 60\\nContext: Conference-Bridge\\nExtension: ${CALLERID(num)}\\nPriority: 1\\nCallerid: ${CALLERID(num)}\\n\" > /var/spool/asterisk/outgoing/${Numbers:1:5})
[Conference]
exten => _**XXXXX!,1,Set(Numbers=${EXTEN:1})
same => n(loop),GotoIf($["${Numbers:0:1}"!="*"]?end)
same => n(orig),Originate(OOH323/${Numbers:1:5},exten,Conference,${CALLERID(num)},1,60)
same => n,Set(Numbers=${Numbers:6})
same => n,Goto(loop)
same => n(end),ConfBridge(${CALLERID(num)},bridge,simple)
exten => _XXX,1,Wait(1)
same => n,ConfBridge(${EXTEN},bridge,simple)
CREATE TABLE `users` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`balance` INT
);
CREATE TABLE `messages` (
`user_id` INT NOT NULL,
`timestamp` TIMESTAMP,
`message` VARCHAR(128)
);DELIMITER $$
CREATE TRIGGER `pay_message` AFTER INSERT ON `messages`
FOR EACH ROW BEGIN
UPDATE `users`
SET `balance` = `balance` - 1
WHERE `id` = NEW.`user_id`;
END$$
DELIMITER ;INSERT INTO `messages` (`user_id`, `timestamp`, `message`)
VALUES (
(SELECT `u`.`id`
FROM (
SELECT `id`
FROM `users`
WHERE `id` = :user
AND `balance` >= 1
) AS `u`
JOIN (
SELECT COUNT(*) AS `count`
FROM `messages`
WHERE `user_id` = :user
AND `timestamp` > NOW() - INTERVAL 30 MINUTE
) AS `m` ON `m`.`count` < 2
), NOW(), :message);
"coordinates" => json_decode($delivery->map, true)
func1() // вызов 1
func1() // вызов 2
func1() // вызов 3
func1() // вызов 4
func1() // вызов 5
func2() // вызов 6
callback1() // вернувшийся раньше всех ответ
func2() // вызов 1
func2() // вызов 2
func2() // вызов 3
func2() // вызов 4
func2() // вызов 5
callback1() или callbcak2() // ответ, вернувшийся вторым
...
Я использую такие профили: