Я пытаюсь скомпилировать исполняемый файл через PHP с помощью msbuild, который компилирует мой источник C#, большая часть скрипта зависит от создаваемого исполняемого файла, поэтому он должен дождаться, когда msbuild скомпилирует источник.Ожидание создания файла
Если я не ставил какой-либо цикл while, он будет компилироваться в полном порядке, и исполняемый файл будет создан, но проблема в том, что остальная часть скрипта выполняется быстро, а конечный результат неверен.
поэтому на данный момент я использую это ..
exec('C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe C:\Users\Administrator\AppData\Roaming\Compile\Myprogram\Myprogram.sln /p:Configuration=Release');
while (!file_exists('C:\Users\Administrator\AppData\Roaming\Compile\Myprogram\bin\Release\Myprogram.exe')) sleep(1);
Однако в этом случае это почти как если команда ехес никогда не будет побежал на всех. Он застревает в бесконечном цикле и, в конце концов, истекает время, в результате чего exe никогда не компилируется.
Любые предложения по правильному пути решения этого вопроса?
Вы уверены, что пользователь работает веб-сервер имеет разрешение на выполнение этой команды, и что все соответствующие переменные среды создаются. PHP должен блокироваться до тех пор, пока внешняя программа не будет завершена, делая ваш цикл while ненужным. – Orangepill
Да, я так считаю, потому что, если я удаляю цикл while, команда exec работает нормально, а msbuild компилирует исполняемый файл. Проблема заключается в том, что остальная часть скрипта работает так же, как это происходит. – user2379231