Comment to 'Image Tanscoder and storage.php'
  • If you define a server on which the application runs with the domain name in server settings, how will you scale the application on several servers? I think that the domain name must be defined in the reverse proxy level or in the web server or load balancer server, I don't understand how you think it is possible to build a social network on a single server. 😀

    In the context of scaling an application across multiple servers, defining the domain name at the reverse proxy level or within the web server or load balancer configuration is crucial. This setup allows for efficient distribution of traffic across multiple servers, enabling the application to handle increased load effectively. Without such configuration, attempting to run a social network or any sizable application on a single server would be impractical due to limitations in resources availability and capacity.

    Any modern app must be designed for scalability,

    If an application lacks scalability, the time and resources poured into it may go to waste. It's impractical to build a business model around an application that can't grow. However, if the aim is purely recreational, experimenting with such an app can enhance the user experience, but its utility remains confined to that realm. In a business context, for an application to launch online, it must boast scalability and high availability, capable of withstanding hardware failures. Moreover, for financial efficiency, it should self-scale both vertically and horizontally. Otherwise, it risks draining resources without yielding results.

    And when we're talking about building a social network with millions of users, that means you're headed for bankruptcy from the very beginning.

    • if i change the file inc/header.inch.php

      this variable:

      define('BX_DOL_URL_ROOT', 'https://example.com/');
      

      with this variable

      define('BX_DOL_URL_ROOT', ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') ? 'https' : 'http') . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'https://example.com/') . '/');
      
      

      i will get this invalid link in logs and the video transcoding Failed:

      May 26 14:07:01 [0] CRON [bx_videos_video_poster_preview] ERROR: storeFileLocally_Storage failed, getting file from URL(http://https://www.exemple.com//s/bx_videos_videos/cyhipts9iduxcqyszqj3ehyt924rzqnt.mp4) failed
      May 26 14:07:01 [0] CRON [bx_videos_video_mp4] ERROR: storeFileLocally_Storage failed, getting file from URL(http://https://www.exemple.com//s/bx_videos_videos/cyhipts9iduxcqyszqj3ehyt924rzqnt.mp4) failed
      May 26 14:07:01 [0] CRON [bx_videos_video_poster_cover] ERROR: storeFileLocally_Storage failed, getting file from URL(http://https://www.exemple.com//s/bx_videos_videos/cyhipts9iduxcqyszqj3ehyt924rzqnt.mp4) failed
      May 26 14:07:01 [0] CRON [bx_videos_video_poster_gallery] ERROR: storeFileLocally_Storage failed, getting file from URL(http://https://www.exemple.com//s/bx_videos_videos/cyhipts9iduxcqyszqj3ehyt924rzqnt.mp4) failed
      May 26 14:14:02 [0] CRON [bx_videos_video_poster_preview] ERROR: storeFileLocally_Storage failed, getting file from URL(http://https://www.exemple.com//s/bx_videos_videos/hyfhstxd65w7wq4jbjegmbzdpmlzdvmb.mp4) failed
      May 26 14:14:02 [0] CRON [bx_videos_video_poster_gallery] ERROR: storeFileLocally_Storage failed, getting file from URL(http://https://www.exemple.com//s/bx_videos_videos/hyfhstxd65w7wq4jbjegmbzdpmlzdvmb.mp4) failed
      May 26 14:14:02 [0] CRON [bx_videos_video_mp4] ERROR: storeFileLocally_Storage failed, getting file from URL(http://https://www.exemple.com//s/bx_videos_videos/hyfhstxd65w7wq4jbjegmbzdpmlzdvmb.mp4) failed
      May 26 14:14:02 [0] CRON [bx_videos_video_poster_cover] ERROR: storeFileLocally_Storage failed, getting file from URL(http://https://www.exemple.com//s/bx_videos_videos/hyfhstxd65w7wq4jbjegmbzdpmlzdvmb.mp4) failed
      
      
      

      I mention that I did the installation using the variable

      UNA_AUTO_HOSTNAME=1
      

      in .env file for the instalation proces. Returning to the original variable in inc/header.inc.php

      define('BX_DOL_URL_ROOT', 'https://example.com/');
      

      video transcoding works correctly and videos are processed correctly

      • Hello @ORV !

        It seems this construction

        ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') ? 'https' : 'http') . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'https://example.com/') . '/'
        

        gives the less '/' symbol at the end of the URL. It looks so by your provided log.

        • To define the BX_DOL_URL_ROOT constant correctly, make sure the URL construction is complete and all parentheses are closed. In your current versions, there is a syntax error in the second variant due to a missing closing parenthesis.

          Correct Version:

          define('BX_DOL_URL_ROOT', ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') ? 'https' : 'http') . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'www.exemple.com/') . '/');
          

          Checking the scheme:

          • (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'): If the connection is secure (HTTPS).
          • (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'): If the forwarded protocol is HTTPS.
          • (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on'): If SSL is on.

          Constructing the scheme:

          • If any of the above conditions are true, the scheme is https, otherwise http.

          Constructing the host:

          • isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'www.exemple.com': If HTTP_HOST is set, use it, otherwise use www.exemple.com as the default value.

          Adding a trailing slash:

          • . / '`' adds a trailing slash to the URL to ensure correct formatting.

          Your fragment has a syntax error (missing closing parenthesis at the end) and should be corrected. However, it seems that you were right, I omitted to add this character "/" to the end of my domain name i wil check it out again. Big thank you.