Вот доказательство того, что мой сайт не является переносимым. У меня было несколько регулярных выражений, которые отлично работали на моем старом сервере. Я перенес свой сайт на новый сервер, и он не работает.
$handle = popen('/usr/bin/python '.YOUTUBEDL.'youtube-dl.py -o '.VIDEOPATH.$fileName.'.flv '.$url.' 2>&1', 'rb');
while(!feof($handle))
{
$progress = fread($handle, 8192);
$pattern = '/(?<percent>[0-9]{1,3}\.[0-9]{1,2})% of (?<filesize>.+) at/';
///######Does not execute this if - no matches
if(preg_match_all($pattern, $progress, $matches)){
fwrite($fh, $matches[0][0]."\r\n");
}
}
Вывод из оболочки выглядит примерно так, и регулярное выражение должно соответствовать размеру файла и проценту.
[download] 56.8% of 4.40M at 142.40k/s ETA 00:13
Регулярное выражение работало на предыдущем сервере, но не на этом. Зачем? Как я могу отладить это?
Разница в серверах заключается в том, что предыдущим был Fedora, а теперь - Centos. Также я указал оболочку как /bin/bash.
Есть ли в PHP.ini что-нибудь, что могло бы вызвать изменения в этом?
Пожалуйста, помогите.
Обновление
Вывод $ progress выглядит так: (просто небольшой пример)
[download] 87.1% of 4.40M at 107.90k/s ETA 00:05
[download] 89.0% of 4.40M at 107.88k/s ETA 00:04
[download] 91.4% of 4.40M at 106.09k/s ETA 00:03
[download] 92.9% of 4.40M at 105.55k/s ETA 00:03
Обновление 2
Может ли это регулярное выражение дать сбой из-за дополнительного интервала в выходных данных?
Также будет ли иметь значение другая оболочка?
* +1025 * [решено] * * тысяча двадцать шесть
Это было решено, и это было связано с регулярным выражением, требующим P - смотрите здесь для получения более подробной информации: Работает ли это регулярное выражение в PHP на самом деле?