小编Ben*_*rey的帖子

Websocket或Long Polling(使用AJAX)使用PHP检测数据库中的更改

我的研究

我花了几个小时研究Google和SO关于Websockets和Long Polling,它们的优缺点等,但我还没有找到一个明确的解决方案.

我已经阅读了关于这个主题的更多文章然后我研究过的任何内容,包括这些(仅举几例):

  1. Ajax/PHP - 我应该使用一个长时间运行的脚本还是轮询?
  2. 使用jQuery和PHP进行长轮询
  3. 轮询数据库的变化 - Ajax/jQuery

我还研究了以下内容:

  1. http://cometdproject.dojotoolkit.org/
  2. http://socket.io/

这个问题的理由

乍一看,这个问题可能看似重复或过于局部化,然而,经过我的广泛研究后,我无法收集足够的信息来做出明智的决定,确定哪条路线会失效.

因此,我希望你们中的一位天才会帮助你们回答这个问题并与我们其他人分享你们的精彩知识:-)

我的问题

简而言之,我的问题确实在标题中; 如果我试图检测数据库记录的更改,使用websocket(socket.io)或长轮询(jQuery和AJAX)会更好吗?

如果答案是websockets,那么请包括一个基本的例子,因为这些让我很困惑,即使是Google上的所有文章......

此外,可能有其他方式做到这一点更好或更适合,如果是这样请分享,我愿意接受任何建议!


附加信息

这可能不会影响最终答案,但为了以防万一,我想解释一下我想要检测的内容以及可能需要考虑的一些事项.

实际上,我正在尝试检测登录会话的任何更改.换句话说,如果用户令牌在数据库中已更改或其超时已用完,则它们已被注销,我想显示一条消息,通知他们这一点.

我不认为这会有所作为,但最终的代码需要适合SSL.使用AJAX很容易,但我不熟悉websockets方面.

最初,我编写了一个系统,使用javascript从服务器检索超时,然后在timeout几秒钟内,它将轮询服务器以查看是否timeout已过期.我认为这是完美的,直到我意识到它只在客户端计算机上的时间与服务器上的时间匹配时才有效.因此我不得不废弃这个:-(

无论如何,我希望我的问题不是太局部化,我期待听到你的意见和答案.请不要浪费你的时间来帮助我使用PHP数据库代码或jQuery AJAX代码,除非它有复杂的部分,因为我能够自己编写这个部分,并且堆栈上有很多其他需要你的帮助比我多.如果他们是更好的解决方案,我对你的意见和/或如何使用websockets更感兴趣:-).

php mysql ajax jquery websocket

11
推荐指数
1
解决办法
5993
查看次数

PHP PDF生成器建议

任何人都可以建议最好的PDF生成器类/库与PHP一起使用吗?优选保持一个.

我知道这是以下问题的重复,但是,已接受的答案已超过3年,我想知道答案自此以来是否已经改变.

哪一个是PHP最好的PDF-API?

谢谢

php pdf

10
推荐指数
1
解决办法
3万
查看次数

了解Laravel Mix

了解Laravel Mix

我目前正在将我的一个网站迁移到Laravel,以便在将来使其更易于维护...我有很多使用Laravel构建API的经验,但我在使用Laravel构建网站的经验非常有限,结果我我需要其他专业人士的一点指导.

总之,我非常感谢以下非常简单的问题的答案,如果有人可以饶我几分钟......

基于文件的JS和CSS而不是基于应用程序

我喜欢以特定的方式编写我的JS和CSS文件,其中每个页面都有自己的与页面相关的特定文件.例如,about.php可能具有以下依赖项:

JS:

  • jquery.js
  • any_other_third_party_library.js
  • app.js (全球职能)
  • about.js (页面特定功能)

CSS:

  • some_third_party_library.css
  • app.css (全球风格)
  • about.css (页面特定样式)

在我自己的框架上,上面的内容将被合并并缩小为一个JS文件和一个CSS文件.根据我的理解,Laravel Mix就是这样做的......

但是,据我所知,这样做的方法如下:

webpack.mix.js:

// About
mix.scripts([
    'resources/assets/js/app.js',
    'resources/assets/js/about/about.js'
], 'public/js/about/about.js');
Run Code Online (Sandbox Code Playgroud)

很简单,我想知道的; 以上是正确的方法吗?是否有更好,更有效的方法来为每个页面自动执行此操作?

什么是bootstrap.js和app.js文件?

从我所看到的,这些文件只是加载依赖项,但这有点令人困惑,因为一些依赖项可能是页面特定的...请问有人可以更详细地解释这些文件的用途是什么?或者至少,他们之间的区别是什么......

摆脱Vue

我没有兴趣在Vue我的项目中使用,所以我删除了以下文件:

/components/Example.vue app.js中的vue代码

这有什么关系吗?

javascript bootstrapping node.js laravel laravel-mix

10
推荐指数
1
解决办法
2846
查看次数

将按钮(HTML)插入Google可视化表格图表

问题

使用Google Chart Tool可以将HTML值插入字段值,但是,我不相信这是一个好习惯.

我使用的方法如下:

function drawVisualization() {
  // Create and populate the data table.
  var data = google.visualization.arrayToDataTable([
    ['Name', 'Height', 'Smokes','test'],
    ['Tong Ning mu', 174, true,'<input type="button" value="test" />'],
    ['Huang Ang fa', 523, false,'<input type="button" value="test" />'],
    ['Teng nu', 86, true,'<input type="button" value="test" />']
  ]);

  // Create and draw the visualization.
  visualization = new google.visualization.Table(document.getElementById('table'));
  visualization.draw(data, {
    allowHtml: true
  });
}
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. 有没有其他更好的方法来实现这一目标?
  2. 有没有办法从这些按钮中捕获事件,同时还检索接收事件的行的ID?换句话说,我如何知道单击了哪个按钮以及它代表哪一行?

html javascript jquery charts google-visualization

9
推荐指数
1
解决办法
3116
查看次数

使用jQuery获取CSS中指定的实际值

说明

我不能相信这并没有被问过,但无论如何...请不要混淆这个问题.

我试图使用jQuery data方法存储元素的高度,以便我可以检索此值并重置特定元素上的原始值.

但是,当我尝试获取元素的高度时,它返回计算的高度而不是实际的CSS值.虽然这在其他情况下非常有用,但实际上我需要获得样式表中指定的确切值,无论是100%,auto,10px等...

我的问题

有没有办法使用jQuery获取元素的确切CSS(非计算)值?

例如(CSS):

#wrapper {
    height: auto;
}
Run Code Online (Sandbox Code Playgroud)

和JS:

// Returns 'auto' NOT computed value...
var height = $('#wrapper').height();
Run Code Online (Sandbox Code Playgroud)

更多的信息

我目前唯一可以看到的替代方法是删除style元素上的内联标记,这将删除jQuery应用的任何样式.这种方法的明显缺陷是它将删除所有样式而不仅仅是一个...

html javascript css jquery

9
推荐指数
2
解决办法
5267
查看次数

在页面上启动大型课程会减慢它吗?

我正在编写一个类,最终可能会有大约3000行代码.

我想知道的是非常简单,在每个页面的顶部启动这个类会减慢页面的运行时间,即使只使用一个/两个对象方法?如果每天访问数千次,是否会给我的服务器带来更大的压力?

如果是这样,我应该考虑创建扩展来处理每个方法而不是将整个类放在一个文件中吗?

EDITED

首先,为了纠正KingCrunch和Kenaniah,这个类适用于我的API,结果意味着它拥有许多功能,用于检索要在网站和我们的iPhone应用程序上显示的数据,以及我们的整个Facebook应用程序.因此,考虑到我们网站的规模和功能,3000线非常小,更不用说700多条线路都是评论.所以我可以向你保证没有设计缺陷,虽然可能存在结构性缺陷,这就是我提出这个问题的原因......

构造函数只是将默认值设置为已定义的变量,仅此而已.

我已经从头开始重写了这个文件,所以没有旧代码,我很确定类中的方法尽可能高效.

我一直在监视我的服务器使用情况等,以及使用apache ab工具模拟大量流量,虽然我的内存使用率上升,但似乎确实没问题.

php lines-of-code class

8
推荐指数
1
解决办法
1460
查看次数

PHP中的基本Memcache问题

我以前从未使用过memcache所以请原谅我的经验不足.虽然这是非常自我解释,但我想确保我正确使用内置函数,因为我正在创建一个将在商业上使用的类,因此它必须正确编码和高效.

我有几个问题,但由于它们非常基本,我觉得将它们组合成一个Stackoverflow问题是可以的.

如果他们需要一篇论文答案,请不要打扰,我会将其作为一个单独的问题发布

  1. 我何时需要使用memcache::addServer,这和之间有什么区别memcache::connect
  2. 如果内存耗尽,memcache是​​否会覆盖存储的值,即使该项目尚未过期?
  3. 我会用memcache::getExtendedStats什么?
  4. 如何检查是否已存在与memcache的连接,如果没有,则创建连接?
  5. 如果我设置了'localhost'的常用memcache服务器,我将如何在同一个专用服务器上设置另一个memcache服务器?
  6. 除了更多的内存,拥有多个memcache服务器有什么好处?
  7. 我应该定期检查memcache服务器更新吗?
  8. 是否使用大量内存在每个页面的开头运行memcache :: connect,即使我没有使用它?
  9. 我何时可能会返回错误,如何捕获这些错误?
  10. 最重要的是,如果我在另一个类中使用memcache,其中有几个方法可能每个脚本调用一次以上,那么我应该如何在每个方法中初始化对象并连接到服务器?

我对最后一个问题的猜测是这样做的:

class test {
     public function blah(){
          // Make sure the memcache object is accessible
          global $memcache;

          // Do something ...
          // Save result in memcache
          $memcache->set(...);
     }
     public function foo(){
          // Do something ...
          // No use for memcache
     }
}

// Initialise each class
$test = new test;
$memcache = new memcache;
$memcache->connect(...);

// Call some methods …
Run Code Online (Sandbox Code Playgroud)

php memcached class

8
推荐指数
1
解决办法
2599
查看次数

使用访问控制源指定多个子域

我试图允许访问我的网站上的每个子域,以允许跨子域AJAX调用.有没有办法指定网站的所有子域,*.example.com或者,当我列出多个域时,为什么以下不起作用:

header('Access-Control-Allow-Origin: http://api.example.com http://www.example.com');
Run Code Online (Sandbox Code Playgroud)

我已经阅读了以下似乎相似的问题,如果不是与此问题相同,除了我想访问子域这一事实,这个问题涉及一般域.

Access-Control-Allow-Origin多个源域?

如果上述问题是此问题的解决方案,那么我如何从标头中检索原点.似乎$ _SERVER ['HTTP_ORIGIN']非常不可靠,甚至不能跨浏览器.我需要能够在尝试使用javascript发送AJAX调用时在任何可能显示错误的浏览器中查看原点.

javascript php ajax header cross-domain

8
推荐指数
2
解决办法
2万
查看次数

PHP上传 - 500内部服务器错误

问题

上传大约8MB或更大的文件时,我收到500内部服务器错误.

  1. 所有PHP设置php.ini都是正确的
  2. maxAllowedContentLength 已在web.config中设置

服务器信息

正如人们可以从中看出的那样maxAllowedContentLength,我运行的是IIS 7.5,使用FastCGI和PHP 5.3.17

附加信息

我已经尝试了很多不同的东西来使这个工作,但根本找不到问题.

但是,我发现以下信息可能有助于找出问题的根源:

  1. 当使用我在服务器上的Media Wiki上传文件(较大的文件)时,我收到相同的错误,这表明它在我的代码中不是错误.
  2. 最重要的是 - 我设法在Plesk文件管理器中上传了一个18MB的文件,这显然意味着Plesk能够解决这个配置问题.我试图将所有Plesk控制面板设置复制到IIS中的此域,但这似乎不起作用.
  3. 在执行脚本之前返回错误,因为我尝试exit;在顶部写入以尝试获取空白屏幕,但这将被忽略并返回500错误.

我认为问题在于configure commandPHP配置的部分,因为当我更改.php文件的处理程序映射以使用Plesk php-cgi.exe而不是通常的时,我没有得到500内部错误.话虽如此,我不能把它放在这个PHP版本上,因为它是Plesk自己的exe,还有其他配置问题.

我认为它可能与configure命令有关的原因仅仅是因为它与其中一个有很大不同phpinfo().

如果您有任何想法或建议,请发布.我已经尝试了所有知识,似乎无法解决这个问题.如果只是Linux ...

提前致谢

更新1

忘记添加,PHP错误日志中没有返回错误.至于IIS错误,我不知道在哪里看

更新2

这是我在我的web.config文件中放置的内容:

<security>
    <requestFiltering>
        <requestLimits maxAllowedContentLength="2147483647" /> 
    </requestFiltering>
</security>
Run Code Online (Sandbox Code Playgroud)

更新3

在您的帮助下,我们设法获得IIS显示的错误.这是我收到的:

PHP警告:POST Content-Length为12221448字节超过了第0行的Unknown中的8388608字节限制

这跟那个有关系post_max_size吗?

更新4

PHP设置如下(来自phpinfo()):

post_max_size = 64M
memory_limit = 128M
max_file_uploads = 20
max_execution_time = 6000
upload_max_filesize …
Run Code Online (Sandbox Code Playgroud)

php iis upload fastcgi internal-server-error

8
推荐指数
1
解决办法
8271
查看次数

将工具提示(div)与文本(跨度)对齐.可能?

我正在努力想到一种方法,我可以实现以下目标,我已经逻辑地思考它,我很确定我不能没有javascript(jQuery).

我只是想知道是否有人有任何巧妙的CSS技巧可以实现我想要实现的目标.

在描述上:-).我试图将a垂直对齐div到a span,其中div可能具有取决于内容的不同高度.请参阅下面的图片,以便更好地了解我想要做的事情:

在此输入图像描述

这是我的代码的起点(请原谅缩小,我打算如何输入).

HTML:

<ul>
  <li><a href="address" title="no need for this as custom tooltip will replace">Link Text here</a>
    <div class="tooltip"><span>Description of the link here</span></div>
  </li>
  <li><a href="address">Link 2 Text here</a>
    <div class="tooltip"><span>Description of the link here</span></div>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

CSS:

ul {list-style-type:none;margin:0;padding:0 0 0 30px;overflow:visible;}
li {position:relative;border:1px solid #000;margin:5px 0;}
li a {font-size:14px;}

li .tooltip {position:relative;margin-left:100px;width:140px;padding:10px;font-size:12px;background-color:#fff;border:1px solid #999;border-radius:4px;z-index:10;}
Run Code Online (Sandbox Code Playgroud)

UPDATE

请不要发布有关jQuery或javascript(或显示或隐藏工具提示的任何css代码)的任何答案,我可以自己写.我只是想知道这是否可以用CSS实现.工具提示的功能在这里无关紧要,我只是想听听你对我的调整问题的意见/解决方案:-)

html javascript css jquery tooltip

7
推荐指数
1
解决办法
4412
查看次数