-->

How to make PHP output a sound (beep)?

2019-07-19 15:34发布

问题:

What's the PHP verson of this python code?

import winsound
winsound.Beep(537, 2000)

回答1:

php is mostly used on webservers, so what the use beeping there, and you can't beep on user computer through php, as php is translated into HTML, which has no such method.

If you want to have Win32 calls have a look at: How do I make Win32 API calls from PHP? also the Win32 Beep Function

But if you want to have beep sound on user browser better embed audio into the HTML itself.

Edit: Another method for just the beep:

<?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;
  }
?>

This will not do anything when running through a browser, if running through a shell it will produce an audible beep $int_beeps times. This should work on Windows, Unix, etc.



回答2:

I tried what Tor Valamo suggested, but I still couldn't get the sound to play.

I would simply get a representation of the chr(7) on my screen but no sound when I used:

system('cmd /k go.bat')

And I would get nothing at all if I used:

exec('cmd /k go.bat')

Instead i used either of:

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

the only side effect is that a cmd.exe does flash, so the /MIN ensures that it only flashes to the taskbar.



回答3:

Update: Never mind, I thought you just wanted a 'beep', not a TONE.

Old post, not answering the question:

You'd need to make a .bat file, so: Open cmd

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

This looks like:

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

Now you just call go.bat from PHP through exec() or system() or something. You need to make go.bat through cmd though, in order for the Ctrl+G character to be correct.



回答4:

Of course people write GUI apps in PHP - that's what wxPHP is for.

Install mpg321 - a tiny sound app:

exec("mpg321 --quiet --gain 10 /path/to/beep.mp3");