Как заставить PHP выводить звук (гудок)?

В чем заключается PHP-версия этого кода Python?

import winsound
winsound.Beep(537, 2000)

person user198729    schedule 17.12.2009    source источник


Ответы (5)


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

Если вы хотите использовать вызовы Win32, посмотрите: Как сделать Я делаю вызовы Win32 API из PHP? также Функция звукового сигнала Win32

Но если вы хотите, чтобы в браузере пользователя был звуковой сигнал, лучше встроить аудио в HTML себя.

Изменить: Другой метод только для звукового сигнала:

<?php
  function beep ($int_beeps = 1) {
    for ($i = 0; $i < $int_beeps; $i++): $string_beeps .= "\x07"; endfor;
    isset ($_SERVER['SERVER_PROTOCOL']) ? false : print $string_beeps;
  }
?>

Это ничего не сделает при запуске через браузер, при запуске через оболочку он издаст звуковой сигнал $ int_beeps раз. Это должно работать в Windows, Unix и т. Д.

person Priyank Bolia    schedule 17.12.2009
comment
Вы не поверите, но на PHP и GTK + можно даже создавать настольные приложения ... - person Tor Valamo; 17.12.2009
comment
да есть приложение winbinder, позволяющее создавать настольные приложения с php :) - person Sarfraz; 17.12.2009
comment
Я знаю, но я использовал слово «в основном», я никогда не видел, чтобы кто-нибудь писал настольные приложения на PHP. - person Priyank Bolia; 17.12.2009
comment
Я знаю парня, который, вероятно, стал бы, если бы я постоянно не рубил его за то, что он страдает от фанатизма PHP ...: P - person Tor Valamo; 17.12.2009
comment
возможно, ему нужен звуковой сигнал на его сервере при каждом доступе в Интернет ... как счетчик Гейгера. Подумайте, это не так уж и плохо, как идея :) - person Stefano Borini; 17.12.2009
comment
Это не эквивалентная версия PHP. - person user198729; 17.12.2009
comment
@unknown Это потому, что не существует простой эквивалентной версии PHP. - person deceze♦; 17.12.2009
comment
Я показал вам, что вы подразумеваете под эквивалентным PHP. Я не думаю, что есть другой способ, кроме встраивания звука (либо через flash, как сказал Джастин), либо с использованием Win32 API для сервера. - person Priyank Bolia; 17.12.2009
comment
@Stefano: Это будет невероятно раздражать любого, кто работает рядом с этим сервером: P - person Tor Valamo; 17.12.2009

Я попробовал то, что предлагал Тор Валамо, но так и не смог воспроизвести звук.

Я бы просто получил представление chr (7) на моем экране, но без звука, когда использовал:

system('cmd /k go.bat')

И я бы вообще ничего не получил, если бы использовал:

exec('cmd /k go.bat')

Вместо этого я использовал одно из:

exec('start /MIN go.bat')
exec('cmd.exe /k start /MIN go.bat')

Единственным побочным эффектом является то, что cmd.exe действительно мигает, поэтому / MIN гарантирует, что он будет мигать только на панели задач.

person daveloop    schedule 11.02.2011

Обновление: неважно, я думал, вам просто нужен звуковой сигнал, а не ТОН.

Старый пост, не отвечающий на вопрос:

Вам нужно будет создать файл .bat, поэтому: Откройте cmd

copy con go.bat [Enter]
@echo off [Enter]
echo [Ctrl+G] [Enter]
[Ctrl+Z] [Enter]

Это выглядит так:

C:\DEV\test>copy con go.bat
@echo off
echo ^G
^Z
    1 file(s) copied.

Теперь вы просто вызываете go.bat из PHP через exec () или system () или что-то в этом роде. Вам нужно сделать go.bat через cmd, чтобы символ Ctrl + G был правильным.

person Tor Valamo    schedule 17.12.2009
comment
Но вы по-прежнему не видите частоту и продолжительность, для этого нужно использовать Win32 Beep API. - person Priyank Bolia; 17.12.2009

Этот работает со стандартным / встроенным звуковым сигналом. (больше похоже на звук "doink")

Также работает на любой платформе.

Супер простой код копипаста.

function beep()
{
    fprintf ( STDOUT, "%s", "\x07" );
}

person Mason    schedule 21.05.2020

Конечно, люди пишут приложения с графическим интерфейсом на PHP - для этого и нужен wxPHP.

Установите mpg321 - маленькое звуковое приложение:

exec("mpg321 --quiet --gain 10 /path/to/beep.mp3");
person Dave Kimble    schedule 23.03.2015