הזרמת אודיו מתוך שרת אחר
-
יש לי קבצים שיושבים בשרת של ימות המשיח, וברצוני לתת ללקוחותי גישה לשמיעת הקבצים מתוך האתר שלי (PHP/YII2).
אני יכול לקבל את הקבצים בAPI מימות המשיח (זה לינק שמביא הורדת קובץ), אך לכן אני חייב להוסיף בבקשה את מספר וסיסמת המערכת או טוקן.
יש לי לקוחות שאין להם צורך בגישה למערכת הטלפונית עצמה, ולכן אני מעדיף לא להשים שממשק עצמו את פרטי הגישה למערכת, ולכן לא אוכל להזרים ישירות באתר שלי בצד הלקוח מול הקובץ בימות המשיח.
אלא ברצוני ליצור כעין פרוקסי אצלי בשרת שמקבל את הבקשה להשמיע את קובץ פלוני, והוא מתחבר לימות המשיח ומזרים את התוכן שמקבל מימות המשיח (מזמרים ישירות בלי להוריד אלי לשרת, לחכות לסיום ההורדה ואז לשלוח לבקשה, אלא יזירם תוך כדי שהוא שואב משם)
אשמח לדעת איך ניתן לעשות את זה -
יש לי קבצים שיושבים בשרת של ימות המשיח, וברצוני לתת ללקוחותי גישה לשמיעת הקבצים מתוך האתר שלי (PHP/YII2).
אני יכול לקבל את הקבצים בAPI מימות המשיח (זה לינק שמביא הורדת קובץ), אך לכן אני חייב להוסיף בבקשה את מספר וסיסמת המערכת או טוקן.
יש לי לקוחות שאין להם צורך בגישה למערכת הטלפונית עצמה, ולכן אני מעדיף לא להשים שממשק עצמו את פרטי הגישה למערכת, ולכן לא אוכל להזרים ישירות באתר שלי בצד הלקוח מול הקובץ בימות המשיח.
אלא ברצוני ליצור כעין פרוקסי אצלי בשרת שמקבל את הבקשה להשמיע את קובץ פלוני, והוא מתחבר לימות המשיח ומזרים את התוכן שמקבל מימות המשיח (מזמרים ישירות בלי להוריד אלי לשרת, לחכות לסיום ההורדה ואז לשלוח לבקשה, אלא יזירם תוך כדי שהוא שואב משם)
אשמח לדעת איך ניתן לעשות את זה -
-
ב-PHP -
לך תשבור את הראש, או תמציא את הגלגל,
או כל דבר מעין זה.בנוד - זה ממש פשוט.
הסיבה לכך, שבנוד יש ממש תמיכה בהזרמה.
בPHP לא מכיר כזה דבר.
אתה יכול לבנות לבד כאמור, ו...
אבל הכלל בתכנות גורס ש [כבר לא צריך לחזור עליו]. -
@MusiCode למה החלטת שבPHP אין תמיכה בהזרמה?
PHP כותב ישירות לתוך התשובה וזה נראה לי עונה על הגדרה של הזרמה מעולה. -
אוקיי, שומע.
אם עושים echo זה באמת פולט את הכל בצ'אנקים?
בכ"א צריך לעשות איזה פקודה שתדחוף את הכל ללקוח, הגם שהטעינה לא הסתיימה.
לא יודע אם חייבים, אבל קראתי שלפעמים הוא אוגר את הכל עד שיסתיים.באמת אם תעשה אקו + סליפ + אקו 2, תקבל את הכל במרוכז.
את זה ניסיתי פעם. -
@dovid אמר בהזרמת אודיו מתוך שרת אחר:
בדוק פה: https://www.geeksforgeeks.org/download-file-from-url-using-php/
הדוגמא כאן עובדת בסדר גמור
$url = 'https://www.call2all.co.il/ym/api/DownloadFile?&token=vPEPEEV&path=ivr2:/M0000.wav'; // $url = $_GET['file']; $path_parts = pathinfo($url); $ext = $path_parts['extension']; $filename = $path_parts['filename']; header("Content-type: application/$ext"); header("Content-Disposition: attachment; filename=$filename.$ext"); echo file_get_contents($url);
-
אוקיי, שומע.
אם עושים echo זה באמת פולט את הכל בצ'אנקים?
בכ"א צריך לעשות איזה פקודה שתדחוף את הכל ללקוח, הגם שהטעינה לא הסתיימה.
לא יודע אם חייבים, אבל קראתי שלפעמים הוא אוגר את הכל עד שיסתיים.באמת אם תעשה אקו + סליפ + אקו 2, תקבל את הכל במרוכז.
את זה ניסיתי פעם. -
@MusiCode
אכן echo עובד בבת אחת (אבל מדובר בחמש מגה ככה שזה לא נורא).
אבל יש פקודה אחרת file_put_contents
https://stackoverflow.com/a/3938551/1271037 -
@dovid אמר בהזרמת אודיו מתוך שרת אחר:
אבל יש פקודה אחרת file_put_contents
ואיך אתה שולח את זה לקליינט?
-
@WWW אמר בהזרמת אודיו מתוך שרת אחר:
@dovid אמר בהזרמת אודיו מתוך שרת אחר:
אבל יש פקודה אחרת file_put_contents
ואיך אתה שולח את זה לקליינט?
file_put_contents(fopen("php://output", "w"), fopen("http://someurl/file.zip", 'r'));
או אולי להשתמש בזה במקום file_put_contents
-
זה עשה את העבודה:
<?php $url = 'https://www.call2all.co.il/ym/api/DownloadFile?&token=oKGdVae4&path=ivr2:/M0000.wav'; //$url = $_GET['file']; $path_parts = pathinfo($url); $ext = $path_parts['extension']; $filename = $path_parts['filename']; header("Content-type: application/$ext"); header("Content-Disposition: attachment; filename=$filename.$ext"); $stream = fopen('php://output', 'w'); $ch = curl_init($url); curl_setopt($ch, CURLOPT_READFUNCTION, function($ch, $fd, $length) use ($stream) { return fwrite($stream, fread($fd, $length)); }); curl_exec($ch); curl_close($ch); exit(); //echo file_get_contents($url); //file_put_contents(fopen("php://output", "w"), fopen($url, 'r'));
רק אצטרך לראות בהמשך שזה משתלב בJS בדפדפן להשמעת הקבצים