回复内容:
SNS采用的技术可不都是PHP (不局限于国内),特别是国外的新兴公司,基本上没有再用PHP的了,国内到还是蛮常用的。简单说说我知道的几个案例:- Facebook (PHP):Facebook采用PHP是历史原因,而且Facebook的PHP被大量的Hack过了(e.g. Hiphop)。Quora曾经问一个问题,为什么「伟大」的Facebook要用PHP,答案是如果没有PHP,Facebook会更「伟大」。PHP的优点在于成熟稳定,经受考验;缺点在于语法较乱,代码管理不好。Tumblr和Pinboard都用的是典型的LAMP组合。
- Twitter (Ruby on Rails):Twitter也不能说全都是Ruby on Rails了,用RoR的地方大概在浅层的实现,真正后台的处理已经改成Scala。Twitter的business logic很简单,RoR的优势并没有完全发挥。RoR的社区很活跃,有许多新技术都诞生于此,而且RoR的程序员都以RoR为骄傲,我的朋友就一直费口舌劝我说转去RoR。
- Foursquare (Scala):承接这上一个说,Scala是运行在JVM的语言,继承了Java的优良特性,同时有许多改进,FS用的是Lift这个框架。
- 人人网 (Java):人人网一开始应该使用的Structs,后来肯定深度的Hack了Structs。Java做网络开发的缺点在于,成本太高。先不说JVM有多消耗内存,Java在开发效率(注意不是执行效率)要低于PHP, Ruby和Python。而且「Java系」习惯铺一个很大的摊子。所以Java主要运用在企业级别的应用,特别是Java对于Threading的控制。
- Stackoverflow (.NET):.NET的初创公司太少了,SO比较奇葩一些。.NET成本高,不仅是开发成本,而且维护成本也高。Windows的服务器很贵,而且用起来不如Linux放心。
- 豆瓣 (Python):豆瓣用Python应该是阿北自己习惯咯,当时还没有Django,所以用的是Quixote。Python现在在YC-Funded的公司中很流行,甚至有超过Ruby。原因我觉得一方面是Python在大学中很流行(相比Ruby和PHP就不行了,我们大学甚至连PHP都不教,不认为它是一门语言),大学生毕业之后创业,自然选择熟悉的语言。Python的Framework选择也很多,包括Django, Web.py, Cherry.py, Pylon等等。
其实很多人对比java和PHP,很多人都说java慢、重,本来不觉得的。后来我有点感悟了。其实人们都把PHP这门脚本语言和JSP这个SCRIPTLET做比较了。而不是PHP和java比较。
在这里假定学习时间是1年的话,搞PHP的同学比起搞java的同学做出来的东西可能更多一点了~所以,从学习曲线来讲, php就像剑法招式,java就像内功,一开始,php比较容易有成就。
到了2年工作经验的PHP同学和java同学比较,就发现原来java有模板引擎技术,velocity,sitemesh等,可以完全不用JSP的。会感觉PHP的优势降低了,而java mvc比起php代码确实是整洁很多很多~ 这时候,PHP和java各有千秋~
最后2位同学都好几年工作经验了(假定还是程序员,没有转行^_^),具体php我没深入了解, 但是当项目巨大,需要做数据分析,数据挖掘,爬虫搜索引擎等重大项目的时候,java的优势就越来愈明显起来了。
最后说说服务器性能问题。这个不得不承认,PHP的服务器(apache或者nginx)比起tomcat,resin是轻量很多的,可能jetty能稍微好一点,但还是比不上PHP的解析器。 从语言层面来讲是肯定适用的,甚至来说大部分高级语言都能做出一个像样的SNS。
存在即合理,PHP、Python和Ruby等动态语言在SNS和大量WEB2.0项目中流行肯定是有原因的。
一般来说大部分项目初创阶段都会选择成本最低,效率最高的手段打磨出产品原型,尽快发布上线以获得及时的用户反馈情况来论证项目模式的可行性,这个阶段看重 起步快、开发快、迭代快。
当产品上线运营并在获得一定成功过后,一般就会倾向于 运行稳定、性能高、扩展方便,这个时候就要具体项目具体分析了。如果当前的技术体系可以满足项目的发展需求,那这种情况最好,不需要对技术架构做大的变动(我觉得FB算这一种,他们大部分的上层应用还是PHP,而且在这种背景下他们才搞出了HIPHOP和HHVM)。但是如果之前的技术体系无法支撑可遇见地规模化发展,那变更技术体系便势在必行了(比如淘宝)。
一个大型项目选择技术体系的时候(没有历史技术包袱的情况下),语言本身的特性并不是最重要的,还要优先考虑到成本(不同的技术体系对服务器软硬件成本影响是很大的,特别像.NET这种土豪才敢用的体系一般的SNS这种前期超低现金流的项目是不敢随便上的,不同技术体系的工资差距也很大的,说到这里为广大PHPer抹把泪)、团队规模(3个人的团队你要用J2EE何必呢)、开发效率(SNS这种项目一般前期是需要很快迭代出功能原型的,动态语言的开发效率和部署效率一般来说是高于静态语言的)、招聘难易度等因素。
我是PHP的重度使用者,也是Python狂热粉丝,曾经也做过好几个J2SE和J2EE的项目,现在业余时间都在琢磨Golang。还是那句话,语言没有优劣,只有适不适合。 此事跟语言无关。 市场不是问题。问题在于成本。 java最大的问题在于它太“重”,对硬件的要求太高。用来做SNS产品,硬件投入是非常巨大的。校内网早期的时候效率问题非常明显,当时的开心网用php实现,运行效率上差距非常大,这个在后来被千橡收购以后有所改善。
PHP这种语言的好处在于你所会遇到的问题基本都有人遇到过了,而且有非常漂亮的解决方案,最重要的是它们是免费的!可是用到Java的话,涉及到大规模分布式的解决方案,都是投入要求非常巨大的,小团队承受不起。
当然,如果你有钱砸,用什么语言都不是问题,大规模网站用java也许会更稳定,可控性更强,但是对于创业公司来说,PHP, Python, Ruby都是更好的选择。 是跟风的结果吧,看到做SNS的Facebook火了,大家做SNS就都选PHP了,看到做问答的Quora火了,做问答的就基本都选用Python了,这直接造成了Python成为2010年的年度编程语言,一度排名到了前五,但是随着Quora变冷,Python的热度已经降下来了。 并不都是用 PHP,除了 PHP 之外相信用 Python 和 Ruby 的也不在少数。比较有名的如 Twitter 用的是 Ruby,知乎和豆瓣等用的是 Python。
Java 和 .NET 面临的问题很可能是成本过高,特别是 .NET,因为 http://ASP.net 受到微软的专利保护,很难完全在 Mono 下实现,这使得其很难在 Linux 下使用。而 Windows 的服务器,且不考虑其软件的授权成本,Windows 所消耗的基本资源也要远高于 Linux,因此同样性能的服务器用 Linux 做网站能够承受的负载要大的多。所以从成本上考虑 .NET 不是特别适合于做大型网站。可以很明显的看到,在全球访问量排名前列的网站,除了微软自己的,没有什么是用 .NET 做的,这是一个很明显的证据。
至于 Java,我个人不是特别了解,因此暂不做过多评论。不过个人感觉 Java 的内存消耗相当惊人。 淘宝用的是java 还有一个重要的,就是学习成本吧,会什么用什么得了,互联网讲究的是快速,什么熟用什么

要保护应用免受与会话相关的XSS攻击,需采取以下措施:1.设置HttpOnly和Secure标志保护会话cookie。2.对所有用户输入进行输出编码。3.实施内容安全策略(CSP)限制脚本来源。通过这些策略,可以有效防护会话相关的XSS攻击,确保用户数据安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显着提升应用在高并发环境下的效率。

thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceIsiseededeedeedeedeedeedeedto to to avoidperformance andununununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函数配置会话名称。具体步骤如下:1.使用session_name()函数设置会话名称,例如session_name("my_session")。2.在设置会话名称后,调用session_start()启动会话。配置会话名称可以避免多应用间的会话数据冲突,并增强安全性,但需注意会话名称的唯一性、安全性、长度和设置时机。

会话ID应在登录时、敏感操作前和每30分钟定期重新生成。1.登录时重新生成会话ID可防会话固定攻击。2.敏感操作前重新生成提高安全性。3.定期重新生成降低长期利用风险,但需权衡用户体验。

在PHP中设置会话cookie参数可以通过session_set_cookie_params()函数实现。1)使用该函数设置参数,如过期时间、路径、域名、安全标志等;2)调用session_start()使参数生效;3)根据需求动态调整参数,如用户登录状态;4)注意设置secure和httponly标志以提升安全性。

在PHP中使用会话的主要目的是维护用户在不同页面之间的状态。1)会话通过session_start()函数启动,创建唯一会话ID并存储在用户cookie中。2)会话数据保存在服务器上,允许在不同请求间传递数据,如登录状态和购物车内容。

如何在子域名间共享会话?通过设置通用域名的会话cookie实现。1.在服务器端设置会话cookie的域为.example.com。2.选择合适的会话存储方式,如内存、数据库或分布式缓存。3.通过cookie传递会话ID,服务器根据ID检索和更新会话数据。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

Dreamweaver CS6
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!